smart OR smart

Masato Nakamura weblog

flashメモ・2 / テキストデータはalphaせず

flashの個人的なメモ。

・スムージングをすると、当たり前だけど、ビットマップフォントなんかはにじみますね。
いや、当たり前なんだけどね。スムージング自体が、ビットマップにアンチエイリアスかけるしろものだから。
なんだけど、ビットマップフォント使ってたから、なんでにじむのかちょっと悩んだ。

・ああー。なんで外部ファイルからとったテキストデータがTweenしないのか分かったー!
flashの仕様として、「テキストデータ」はalphaがかけられないらしい!
つまり、例えば「_ゴシック」とかのデバイスフォントを利用していたり、テキスト入力してたりとか。
要は「選択ができるテキスト」はダメっぽい。そっかー。
回避策としては、そのデータをBitmapにしちゃうか、alphaのマスクをかけちゃうかなど。
僕は面倒だからBitmapにしてみた。つまり、その、デバイスフォントじゃなくしてみた。
ちなみにこれ、FlashPlayerのver.10からは問題ないみたい。ちょっとの辛抱か。

・Progressionにて、indexページがあり、その下の階層には、ぜんぶ「TOPへ戻る」的な
ボタンが欲しくて、そんでそれはその階層にいる間は消えないでほしいんだけど、
そういった処理はどうしたらいいんだろう?
indexの子にaboutだlinkだ置いていても、子同士の移動に親を経由しちまう。
だから、いちいちボタンが出たり入ったりする。嫌だなぁ。


と思ってたんだけど、下の階層をぜんぶ一つのコンテナシーンでくくって、
そのコンテナのonLoadにボタン出現、onUnloadにボタン消滅処理を作ることで実現。
ああ、シーン遷移のルールをちょっと分かったぞ。
こういった、通りすぎる時だけの処理をさせるシーンがあってもいいんだねー。なるほろ。

Progressionを学ぶ(4)

すごい初心者なこと。
ProgressionのaddCommandは、ふつうにやると直列処理なのだけど、
たまには同時にコマンドしてよお願いだよぷろぐれっしょん、と思うこともあるので、メモ。

やり方は超簡単。

addCommand(
//並列処理
[
new AddChild(なんたら),
new AddChild(なんたら2)
],
//直列処理
new AddChild(なんたら3)
);

ってやるだけ。うわーい。こんだけだー。
他にもこんな方法もあります。

addCommand(
//並列処理
new ParallelList(0,
new AddChild(なんたら),
new AddChild(なんたら2)
),
//直列処理
new AddChild(なんたら3)
);

パラレルリストをnewする方ですね。
こちらは最初の引数に null とか0を入れないと動かないみたい?

まあ、とりあえずこれで並列処理ができるようになりました。
さて、またがしがし作っていきたいとこです。

flashメモ・1 / 写真やAS3.0

flashの個人的メモ。

・写真はやっぱり、pngで吐き出してpngのままロスレス、スムージングさせたほうがキレイ。
jpgで吐き出して、jpgをさらに圧縮させて表示させると、ファイルサイズは減るけど汚い。

・AS3.0では、「どこ」でそのスクリプトが起きているのか、というのを気にしている感じ。
フラットなrootでも、いきなりstageWidthとかはとれない。ちゃんと、stage.stageWidthとやらないととれない。
同様に、Progressionだと、progression.container.stage.stageWidthとなる。
それは、Progressionのコンテナのなかに入るため。「どこ」が重要なのはそういう意味。
理解すると当たり前だなって思うけど、分からないと意味不明なのでメモ。
あ、オブジェクト指向ってこういう意味?ちがう?

・同様に、ムービークリップの中に入ってスクリプト書くなら、それはthisで動くよね。

・あと、これも気づくと当たり前だけれど、自分のケツは自分でふかないといけない。
addChildしたんだったら、どっかでremoveChildしないと、消えない。
そのあいだ、enterFrame的な動作はずっとしまくってるから、重なってくると死んじゃう。

・拡大が予想されるものは、「斜線」とか使わないほうがいいのかな。
Bitmapデータだから仕方なかったんだけど、拡大するとドット感がものすごいことになった。
つか、リキッドなもの考えるなら、斜めとかは避けたほうが無難だねぇ。手間的に。格子状の模様も継ぎ目とか出る。

Progressionを学ぶ(3)

Progression 勉強メモ。

あいだがだいぶ空きましたが、引き続き。
まじめに勉強するなら、やっぱり、実践しないといけないと思ってて、
そのために一つサイトのデザインを作ってました。
で、デザインはとりあえず出来たので、勉強再開です。

今回やったことは、フルFlashサイトなので、stage100%にするということ。

あ、僕はAS超初心者であるうえに、AS3.0の理解度も超低いです。
グローバル変数を説明することも出来ません。たはー。
ではいきましょう。

まずフルFlashなので、ヘッダーとフッターたちは、常に一番上と下にあってほしいです。
見た人がウィンドウをリサイズしても、自動的に移動するようになっていてほしい。
つまり、リサイズ処理ですね。
これを分からないなりに苦心して考えました。

まずヘッダー。
これは一番上に常にあるも何も、初期値にしときゃ勝手にそこにあるので放置。
何はともあれインスタンスを作成。

var headerBG:HeaderBG = new HeaderBG();

なお、基本的なやり方は、特集:Flashのフレームワーク「Progression3」を始めてみよう!にのっとってます。
名前の付け方というか、なんというか。

んで、フッターですか。

var footerBG:FooterBG = new FooterBG();

で、あとはコマンドでaddChildしてやりゃヘッダーフッターは生まれますね。
ここまではいい。
けど、フッターを一番下に表示させるにはどうしたらいいだろう?
フッターは30pxの高さで作られているので、一番下というのは、つまり、
(ステージの高さ-30px)で常に表示されていればいいということになる。
そうすれば、いつリサイズされても、それは常にウィンドウの高さ-30pxの位置にある。
ということは、こうかな?

protected override function _onLoad():void {
//インスタンスの作成
// 実行したいコマンドを登録します。
addCommand(
new Prop(headerBG, { x:0, y:0} ),
new AddChild(progression.container, headerBG),
new Prop(footerBG, { x:0, y:progression.container.stage.stageHeight-30} ),
new AddChild(progression.container, footerBG),

おお。出来た。
しかし、これではリサイズをすると変わってしまう。
AS2.0的に言うと、onClipEvent(load)で位置を指定したようなもんですね。
ロードされたその時はいいけれど、リサイズ後の処理はまったく考えていない。
なので、AS2.0的なonClipEvent(enterFrame)な処理をしなければいけません。

で、しかしAS3.0をまったく理解してない僕はどうすればいいのかさっぱりだった。
だから、グーグル先生に聞いた!

すばらしい人がいるもんですね。
Progression3はじめてメモ
ここのリサイズ処理を超参考、どころか、まんま、まるパクリしてみました。

するとこうなりました。

protected override function _onLoad():void {
//インスタンスの作成
// 実行したいコマンドを登録します。
addCommand(
new Prop(headerBG, { x:0, y:0} ),
new AddChild(progression.container, headerBG),
new AddChildAt(progression.container, footerBG,10),
function():void {
_onResize();
progression.container.stage.addEventListener(Event.RESIZE, _onResize);
}
);
}
private function _onResize(event:Event=null):void
{
var containerWidth:Number = progression.container.stage.stageWidth;
var containerHeight:Number = progression.container.stage.stageHeight;
footerBG.y = containerHeight - 30;
}

おっ。出来た!
なお、footerBGは上のインスタンス作成のところに入れておくと出来ません。
当たり前ですね。でも、その当たり前に気づかずに1、2時間悩みました。

とりあえず、これでフッターを一番下、常にステージの高さ-30pxの位置に置くことは成功。
ふう。時間かかったな。
次はコンテンツに入ってみたいと思います。

Progressionを学ぶ(2)

引き続きProgressionメモ。
そういうの興味ない人はごめんなさい。
つーかそれなに?プログレッション?説明して!
なんか、webの技術ちっくなことの話です。

とりあえず
Flashのフレームワーク「Progression3」を始めてみよう!
にあるチュートリアルを一通りやってみた結果、
だいたいのことは分かったような感じ。

肝だな、と思ったのは、やっぱり”概念”だなぁ。

オブジェクトを一つムービークリップで作ったあと、
タイムラインな僕はそれをステージに置いたりとかして、
んでそのムービークリップにonClipEvent(load)とか書いてたんだけど
(すいません、思いっきりAS2.0なノリで)
いまやそういうノリじゃないんスね。

シーン=舞台。
そこで何が起こるかはそれぞれ自由だけども、
舞台の暗転とか、幕引きとかはやっぱりこのシーンでやりたいね。

キャスト=役者。
そこで何かするのはやはりこの人。いなくちゃはじまらない!

コマンド=演技指導
でも、役者は放っておいてもそこにただいるだけ。
彼らを動かすには、このコマンドさんの力がいる。

なんて。これは上記リンクの説明をざっくりしたものなんだけど、
この流れを理解してると、やっぱり違うなぁ、という印象。

まずはこの概念を理解することからはじめて、
さて、ようやくこれから本格的にProgressionな勉強を始めたいと思います。
上記リンクの第5回がかなり意味不明で、僕は若干参ってますけどね。
あれ初心者に向いてるの?いきなり置いてけぼりくらった感あるけども。
ま、がんばっていきたいと思います。

READ or READとかそのうちフルFlashのサイトに生まれ変わらせちゃうから!


Page 1 of 212