初めての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( );
こんな感じで塗ってやると大きさが100×100になるので、後は_widthと_heightを弄る。
asfunctionおかしくね?
asfunction≒javascript:だと思いねぇ。
apeirophobia: asfunctionの罠で解決。小一時間ハマった。
scrollPaneにムービークリップを入れられません><
blog.shimatch.jp : ScrollPaneコンポーネントで解決。外部swfか画像かシンボル入れろ、と。小一時間ハマった。
Flash 8 LiveDocs
付属のヘルプよかマシなのを期待してたら・・・多少はマシだが、期待してた俺がバカだった。ってゆーかJavaScriptで作るなよ。しかも重いし。
公式がこれなので、どこぞにナイスなリファレンス本が無いか探索中。
Info
Navigation
- 関連のあるエントリ
- 2006-01-10 XBOX360のゲームはFlashで開発できるっぽい
- 2007-02-23 Flashを利用したストレージが動かん
- 2005-12-23 Flash でクリップボードにコピー
- 2007-03-08 ExternalInterfaceに挑む
- 新しいエントリ(日付順)
- 10月8日の駄文
- 古いエントリ(日付順)
- バーチャルコンソール 罪と罰 ~地球の継承者~
Comment
投稿したコメントは公開されません。サイトオーナーのみが閲覧できます。
返信等を希望する場合は、コメント内に連絡先のメールアドレスかサイトのURLを入力してください。
2007
0925