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のサイトに生まれ変わらせちゃうから!



