絶対つぎに作るときに忘れてると思うので、
ASについてのメモを書いておきます。
絶対つぎに作るときに忘れてると思うんですが、
あっちのファイル見に行ったりこっちのファイル見に行ったりするのがめんどくさいので、
ここに書いておきます。
大切なことなので、二回書きました。
使用ソフト:Suzuka
使用言語:Actionscropt1.0
Q1.
スプライトをステージに貼らずに倉庫からたくさん張りたい。
A1.
まず、スプライトを"魚"という識別子をつけて書き出す。おい、本番ではちゃんと半角英数で書けよ?
//出したい魚の数を変数として1フレーム目のアクションフレームに書いておく。
mm = 100;
//なぜ変数にしておくかというと、この数を後で何度も使うから。
//以下のfor文を何度も書くことになるんじゃ……
//アクションフレームに下の呪文を刻む。
for(i = 0; i < mm; i++){
attachMovie("魚","魚"+i,i);
//貼るだけなら、これだけでOK。
//アタッチするだけだと100匹全部を(0,0)に貼り付けちゃうので、ランダムで_xと_yを指定する
this["魚"+i]._x = Math.floor(Math.random() * 100) + 20;
this["魚"+i]._y = Math.floor(Math.random() * 200) +50 ;
//こうすると、魚100匹を (20,50)から(120,250)の間にランダムにおいてくれる。
//ほかのところで、ここでアタッチした魚を呼び出すときは、毎回for文をかきます。
//ここで書いたからといって、ほかのところで名前だけで呼び出すのはできないみたい。
//等間隔で並んでほしい場合は =10*i とか書いておくと、10pxごとに並べてくれる。
}
Q2.
魚に動いてほしい。
A2.
ふつうステージに置いたスプライトなら
「onClipEvent (enterFrame) {むにゃむにゃ}」って書くじゃん?
(これの詳しいことは猫の操作に書くのでまたあとで)
魚ってステージに無いから書けないじゃん?
アクションフレームでほかのスプライトを以下の呪文で傀儡にできる
onEnterFrame = function (){
//ここは呪文の定型文なのでそのまま書くこと
for(i=0;i < mm;i++){
//こうやって魚100匹を操りたい度にfor文を書くことになる
//ので、最大数を変数にしておくと便利なのでした
this["魚"+i]._y += 5;
//表示するごとに5ずつ下に移動する
if(this["魚"+i]._y > 500){
this["魚"+i].removeMovieClip();
//魚が500よりも下に行ったらスプライトを表示から消す。
//こんな感じで条件を書いていく
//removeはvisualをfalseにするより便利(体感)
//詳しいことは詳しい人に聞いて
}
}
//for文終わり
if(残魚 < 1){
_root.gotoAndStop(4);
}
//上のifには入れてないけど、「魚が全部消えたら」結果発表にするためのアレ
//=0って書くとうまくいかなかったので、<1って書いてる
};
//式の終わりなのでセミコロンが必要(という認識)
Q3.
次に自機を準備します。
A3.
質問じゃなくなった。
歩いてる姿にするために猫を二枚書いてスプライトへ。
今回はめんどくさいからあたり判定の場所なんてつけてない。
これもアタッチムービーしてもいいけど、オブジェクトにそのまま書き込めるのがAS1の利点なんだから画面に配置。
これで初期配置の設定も安心。
今回はキーボード操作にするので
onClipEvent (enterFrame) {
//この呪文はスプライトにしか書けない
if (Key.isDown(Key.UP)) _y -= 10; // 上に移動
if (Key.isDown(Key.DOWN)) _y += 10; // 下に移動
if (Key.isDown(Key.LEFT)) _x -= 10; // 左に移動
if (Key.isDown(Key.RIGHT)) _x += 10; // 右に移動
//左と右で向きが変わってほしいやん?
if (Key.isDown(Key.LEFT)) _xscale = 100; // 左向き
if (Key.isDown(Key.RIGHT)) _xscale = -100; // 右向き
//これを上の移動方法と一緒に書くとうまくいかない。
//そういえば、魚を一定数取るとねこのスピード上げたかったんだけどうまくいかなかったんだよね。
//だれか教えて。
if(this._x < 0){this._x = 0;}
if(this._x > 640){this._x = 640;}
if(this._y < 339){this._y = 339;}
if(this._y > 440){this._y = 440;}
//はみ出ないためのおまじない
}
//マウスのときは this._x = _root._xmouse; とかでなんとかなるんじゃない
Q4.
魚と猫のあたり判定は?
A4.
hittestという、スプライトとスプライトが当たったかどうか見る呪文がある
if (this["魚"+i].hitTest(_root.猫)) {
this["魚"+i].removeMovieClip();
}
「魚が」「猫に当たったら」
「魚をremoveしてくれ」
という意味
魚が動くところ(A2.)に一緒に書いた。
魚が外に出るか猫に当たると消えることになる。
点数つけたかったらifのところに書き足して。
以上の4点を書けば、「ねこは深夜に魚をたべる」ができあがります。
もっと詳しい話が聞きたい方は、neoacoさんよりもっとflashに詳しい人に聞きましょう。
忘備録
ツイッターに呟くやつ
on(release){
getURL("https://twitter.com/intent/tweet?source=webclient&text=" + escape("固定文") + escape(変数) ,"_blank");
}
これで新しいウィンドウを開いてツイートする画面が出る。
AS3では使えないので注意。
追伸、僕はHTMLはメモ帳に手書きです。
サイトTOPへ戻る