frimo3 でActionscript3の覚え書き。

自分ほど迂闊な人がどれだけいるかは解りませぬが。

大がかりに凝ったものを作るわけではないけど、
ピンポイントで必要なのがAS3のが楽orAS3にしかない系の方向け、でしょうか?
下準備。
ASファイルを用意する。

といっても特に難しい事はありません。
適当なテキストファイルを用意して、拡張子(○○.txtのtxt)をasに書き換えるだけ。
それを編集するファイルと同じフォルダにぽいします。
編集に便利なソフトもあるようですがメモ帳でやってます。
(段々面倒になってfrimoで直接いじくるようになりましたが)
*.flaなり*.sqfと同じフォルダに拡張子*.asのファイルを置きます。
 知ってる人はなんだそんな事と思うかもですが、
 何となくで初めてしまった私はここで「何処にスクリプト描くねん」てなりました。

 大抵の場所がこのぐらい解ってるの大前提なんですよね……^^;
 このフォルダを今後FOL フォルダ
 ファイルを
 otamesi.sqf test.as  と呼ぶことにします。

 あと今後frimo3の画面を使って説明していきます。
 元々FLASH8以上のスクリプト使いたくて買ったらAS3じゃないと……
 てな具合で手を出したものなので……。
  そして次は「otamesi.sqf」側 の準備です。
frimo3の画面を開くと下側に出てくるここ。


クラス名に既にtestと入ってますが、お気になさらず。
発行設定をクリックすると以下の画像が出ると思います。

赤枠の中をこのようにしてから「設定」をクリックして下さい。
そしたら以下の画面がでると思います。

ドキュメントクラスに「
test」と入れて、
黄色い「」をクリックして  
test.asファイルのあるFOLフォルダを指定して下さい。

順番が前後したかもしれませんが画面上部の「ツール」をクリックします。

アクションスクリプトのタブをクリックしてActionscript3.0設定をぽちっと。
そしたらこのような画面が出ると思います。

Flec SDKパスにはfrimo本体をDLした場所にflex_sdkと いうフォルダがあるので
それを指定してください。最新バージョンとは違うらしいのですが、
色々面倒なので私は何も弄ってません。

ソースパスの所は先ほどと同じ「
test」のあるFOLフォルダを指定して下さい。

続いて
test.as」側の準備です。
ここまでくれば後は検索していろんなサイト見ても解るようなると思います。
サンプルな感じでマウスの座標取得するだけの物を書いておきます。
といっても文中に出てくるムービークリップmcを作らないとまだ動きませんが……。
package
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.text.*;

    public class 
test extends Sprite
    {
    var d = 20;
    var e = 10;
    var zahyo = new TextField();
    var mc = new mcclas();
    //冒頭にvarで宣言するものは大体ここ。
    //AS2で言う所のフレーム1で変数宣言するような場所。
    //使う変数やムービークリップは大体ここで宣言しておく。

    public function 
test(){
        addChild(zahyo);
        with(zahyo){
            border = true;
            x = 0;
            y = 0;
            width  = 120;
            height = 20;
            text = "仮置き";
            }

        addChild(mc);
        with(mc){
            x = 0;
            y = 30;
            mx = 0;
            my = 0;
            zax.text = "X座標";
            zax.border = false;
            zax.background = false;
            zay.text = "Y座標";
            zay.border = false;
            zay.background = false;
            }
        mc.addEventListener(Event.ENTER_FRAME,mouse);
    }//functionEnd

    function 
mouse(k){
        with(k.target){
            mx = stage.mouseX;
            my = stage.mouseY;
            zaxm.text = mx;
            zaym.text = my;
            zahyo.text = mx +":"+my;
            }
    }//functionEnd
    }
}

functionの使い方が解る人なら多分ここまでで何とか……なる?

importというのはこのFLASHで使う機能?とかそんな?
指南系サイト行けばサンプルソースの一番上に大抵の場合あると思います。
AS2でも使っていたようなのが出来そうは多分この三つ?(把握しきれてない)
 import flash.display.*;
 import flash.events.*;
 import flash.text.*;
ちなみに余分なの入れても書き出す段階で使われていないのは読み込まないそうです。
この辺は良く解ってないですがここまでくれば多分検索して調べられる……かな?
緑色の「//functionEnd」は 目印として書いてるので無くてもいいです。
無いと十中八九functionごとの区切りが解らなくて凡ミスしますが(しました)

注意事項
AS3になってから「_root」が使えなくなってます。
使えるようにする方法はいくらかあるらしいのですが、
色々と面倒くさいので適当なムービークリップに変数をほっぽり込むこと推奨。
(特にリアルタイムとかフレーム進行で変化していく変数なんかは)
mcclasの 準備。

まず、なんでも良いのでムービークリップを作ります。
中には適当にテキストフィールドを四つほど。
四つのテキストフィールドはインスタンス名付けておきます。
左上:zax 右上:zaxm
左下:zay 右下:
zaym

次に上の「ウィンドウ」からライブラリを開き、右クリック。
メニューからリンケージを開いてクラスに「
mcclas」 と入れます。
これがスクリプトで動的に呼び出す為の固有名詞になりますので
他とかぶらない名前を付けてください。


これであと諸々プロパティ関連設定すれば普通に動きます。
が、ちょっと解説出来るぶんだけしておきます。
AS3は「var」で宣言するのを忘れると動かないものが多いです。
動かないどころかか書き出し段階でエラー貰います。要注意。

    var zahyo = new TextField();
    var mc = new mcclas();


 ちなみに最初からステージ上に設置してれば「var」いらないです。
 これは多分AS2の頃からそんな具合だったはず。
 そして「var」で宣言した物をステージ上にはっつけるのがこ れ。

        addChild(zahyo);
        addChild(mc);

 ムービークリップの中に入れるときは頭にここの場合は「mc.」をつけて。
 試しに
mc.addChild(zahyo);」とやってみたとこ ろ、mcの外にあったzahyoが消えて、
 mcの 中にzahyoが出てきたので名前はちゃんと別個にすべし。

 大量に使うだとか同じムービークリップを複数使いたい人にはこんなのどうぞ。

        var mc_arry = new Array();

        var mc_arry[i] = new mcclas();
        addChild(var mc_arry[i]);

 こちらで使ってるのは大体こんな感じです。
 で、そのまま設置するとX座標Y座標ともに0の場所にほっぽかれるので、
 位置を調整しにかかります。

        with(zahyo){
            border = true;
            x = 0;
            y = 0;
            width  = 120;
            height = 20;
            text = "仮置き";
            }

 with 使ってるけど「zahyo.x = 0;」でも大丈夫。
 で、設置したムービークリップにスクリプトを書き込むのがAS3ではこちら。

        mc.addEventListener(Event.ENTER_FRAME,mouse);

 この「
Event.ENTER_FRAME」の部分は他にも種類があって、
「MouseEvent.CLICK」と記述すればクリックした時にイベントが動きます。
 ただし上にテキストフィールドがあるとそれが邪魔で動かないので、

        mc.(テ キストフィールド名).addEventListener(Event.ENTER_FRAME,mouse);

    function mouse(k){
        with(k.target){
            mx = stage.mouseX;
            my = stage.mouseY;
            zaxm.text = mx;
            zaym.text = my;
            zahyo.text = mx +":"+my;
            }
    }//functionEnd


 とでもして、さらにムービークリップの変数を操作したいのであれば
k.target」 を「k.target.parent」 にしておかないといけないようです。
こちらのFLASHでやってます。)
 単に「addEventListener(Event.ENTER_FRAME,mouse);」 とした場合は、
 ステージ上(root部分)が常時動くようになります。

 頭につけたムービークリップは「function mouse(k)」 の「k」 に対応してます。
 これに気付くまでうんうん頭捻ってました……。
 あとお世話によくなるボタンを使いたい場合は

(ボタンインスタンス名).addEventListener(MouseEvent.CLICK,関数名);

function 関数名(k){
~まあ諸々~
}
//functionEnd

という具合にすればOK。


これだけ書いておけば指南サイトを見て頭を捻らなくて済む……でしょうか?
誰かの助けになったなら幸い。