初めてのActionScript2.0

ECMAScript準拠だからコード周り以外のコツさえ掴めば余裕ですよねー。とか思ってたらエライつまづいたので、備忘録も兼ねてメモ。

なお、製作にはFlash8+外部エディタを利用している。

1行目にthis

サンプルでソースの一行目からthis.****って書いてあって数秒思考停止したんだが、なんのことは無い。ただ単に_rootのことだった。

_root≒windowだと思いねぇ。

絶望した!正規表現が使えないAS2.0に絶望した!

RegExp class for FlashからRegExp.asを落として

#include "RegExp.as"
var str = "aabbcc12345ccbbaa";
var r = str.replace( new RegExp( "[a-z]+", "g" ), "@" );
trace( r ); //@12345@

onMouseDown

適当にムービークリップ作成。onMouseDownでマウスボタン押した際に色々実行させようとしたら、ムービークリップ領域外でも発生した

小一時間ほど悩んだ結果、onPressというハンドラがあるらしく、onPressは領域内で押したとき、onMouseDownはステージ上、つまりFlash全体で押したときに発生するらしい。

・・・いや、領域外で取得したかったら_rootに設定すればいいと思うんだが、なぜに?

onDblClick

mc.onPress = function( ) {
    var time = ( new Date ).getTime( );
    if( this.lastPress && time - this.lastPress < 300 ) {
        if( this.onDblClick ) this.onDblClick( );
    }
    this.lastPress = time;
}

こなかじ?

ライブラリに入れた画像が荒い

プロパティを開いて画質をロスレスにする。

マウス乗せた時のカーソルを指にしたい

mc.useHandCursor = true;
mc.onRelease = function( ) { };

onReleaseもつけないとダメってどっかに書いてた。

ムービークリップ ≠ Div

paddingもmarginもないのでposition:absoluteだと思って絶対配置。

widthとheightを操作して余白を確保しようと思ったら内容物全てが拡大された。

画像読み込んだらwidthとheightが画像のサイズに合わせられた。

ムービークリップ1つにつき画像を1つしか読めないので、敷き詰めたかったらそのつどムービークリップを作らねばならない。

ムービークリップの大きさが変更できない

中になにもないとダメらしいので

mc.beginFill( 0xFFFFFF, 100 );
mc.moveTo( 0, 0 );
mc.lineTo( 100, 0 );
mc.lineTo( 100, 100 );
mc.lineTo( 0, 100 )
mc.lineTo( 0, 0 );
mc.endFill( );

こんな感じで塗ってやると大きさが100x100になるので、後はwidthとheightを弄る。

asfunctionおかしくね?

asfunction≒javascript:だと思いねぇ。

apeirophobia: asfunctionの罠で解決。小一時間ハマった。

scrollPaneにムービークリップを入れられません><

blog.shimatch.jp : ScrollPaneコンポーネントで解決。外部swfか画像かシンボル入れろ、と。小一時間ハマった。

Flash 8 LiveDocs

付属のヘルプよかマシなのを期待してたら・・・多少はマシだが、期待してた俺がバカだった。ってゆーかJavaScriptで作るなよ。しかも重いし。

公式がこれなので、どこぞにナイスなリファレンス本が無いか探索中。