忍者ブログ

painkiller_blog

仕事でwebのお仕事。プライベートで油絵描いてます。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

tweenerも素晴らしい

最近はこういうタイトルばっかりつけていますが本気でそう思うのでそう書きます。
tweenerとFuseKitってお互いにいろんなことが出来るけど、as3.0になってからはtweenerがすごく紹介されていますよね。
as3.0のFuseKitである"GO"はまだ使ったことが無いので何ともいえませんが、もっと英語が読めたらそのすごさが分かると思います。

さて、今回はtweenerを使ってみるか。
スペシャルプロパティもろもろあって覚えるだけで大変だけどやっていこう。

では。

PR

ステージの外

MovieClipLoderを使って画像を読み込みして使う事、よくありますよね。
でも読み込んだMCをタイムラインアニメで使用して、空白キーフレームを打つと次にそのシンボルを使うと読み込んだ画像が無くなってしまってる。

そういう時は僕はステージの外に配置して、_visibleはfalseに。
するとグラフィック面でのメモリは食わないので軽いです。

…もっとスマートな方法あるのかな??

casaframeworkもすばらしい

xmlとデータをflashにとりこんで配列化してみるときに使ってみたんだけどこれが結構便利です。
これなら更新の際も便利だね。

ソースは

import org.casaframework.load.data.xml.XmlLoad;
import org.casaframework.util.XmlUtil;
import org.casaframework.util.ArrayUtil;
var swfinfo:Array;
function onDataLoad(sender:XmlLoad):Void {
    //XmlUtilでXMLをパース
    swfInfo = XmlUtil.xmlToObject(this.myXmlLoad.getXml())['data'][0]['items'];
    //initを実行
    init();
}
//XMLをロード
var myXmlLoad:XmlLoad = new XmlLoad("movies.xml");
//ロード完了時の処理
this.myXmlLoad.addEventObserver(this,XmlLoad.EVENT_LOAD_COMPLETE,"onDataLoad");
//ロード開始
this.myXmlLoad.start();

function init():Void {
    //trace(swfInfo[0].movie[0].nodeValue);
    //ここで配列化
    var swf_array:Array = new Array();
    for (i=0; i<=swfInfo[0].movie.length-1; i++) {
        swf_array[i] = swfInfo[0].movie[i].nodeValue;
    }
    //ここでランダム化
    _swf_ARR = ArrayUtil.randomize(swf_array);
    trace(_swf_ARR[0]);
    //ランダムにして各MCにloadClip
    //全体管理用リスナー
    var Listener:Object = new Object();
    //ロードするswfの数
    Listener.num = 7;
    //ロード完了した数
    Listener.count = 0;
    //onLoadInit
    Listener.onLoadInit = function() {
        this.count++;
        if (this.count>=this.num) {
            this.onLoadAll();
        }
    };
    //全てのswfをロードしたときの処理
    Listener.onLoadAll = function() {
        //gotoAndPlay(2);
        trace("完了");
    };
    //ここから読み込み処理
    var Loader0:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader0.addListener(Listener);
    Loader0.loadClip(_swf_ARR[0],this.load0);
    //ここまで
   
    //ここから読み込み処理
    var Loader1:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader1.addListener(Listener);
    Loader1.loadClip(_swf_ARR[1],this.load1);
    //ここまで
    //ここから読み込み処理
    var Loader2:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader2.addListener(Listener);
    Loader2.loadClip(_swf_ARR[2],this.load2);
    //ここまで
    //ここから読み込み処理
    var Loader3:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader3.addListener(Listener);
    Loader3.loadClip(_swf_ARR[3],this.load3);
    //ここまで
    //ここから読み込み処理
    var Loader4:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader4.addListener(Listener);
    Loader4.loadClip(_swf_ARR[4],this.load4);
    //ここまで
    //ここから読み込み処理
    var Loader5:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader5.addListener(Listener);
    Loader5.loadClip(_swf_ARR[5],this.load5);
    //ここまで
    //ここから読み込み処理
    var Loader6:MovieClipLoader = new MovieClipLoader();
    //リスナー登録
    Loader6.addListener(Listener);
    Loader6.loadClip(_swf_ARR[6],this.load6);
    //ここまで
   
}

っと。
xmlを解析して配列化。そしてまたrandomizeを使用して中身をランダムにするとloaderに読み込むムービーはいつでもランダム。
再生するとき、更新されたときも必ずランダム配列になってるのでなかなかいい。

ところでこの最後のところのloadClipの処理が嫌。
同じこと何度もやってる。
これを一回で出来ないかな?forを使ってとか?

やってみたけどなぜかできない、納期が迫って時間がない。。。

次は成功させるぞ!

FuseKitって素晴らしい!

FuseKitを使用してみて思うのはトゥイーンを配列化して同時に動くもの、最初のトゥイーンが終わって次に動くものってやつを管理しやすいのがいいところ。

でも使い勝手によってはTweenerの方がいいときがあるな。
最初に考えてからやんないとドツボにはまりそうだ。

単体の動きはTweenerの方がお手軽な感じがする。ボタンにロールオーバーするとオブジェクトがさっと動いて終わりとかね。

それでもまだまだ2.0の仕事なのでこれからもお世話になります。

FuseKitはすばらしい

追記 flashPlayer10 にてはまる

僕の書いたアクションスクリプトはちゃんと書いてる人から見ると「ケッっ」てな感じの駄文ならぬ駄スクリプトでした。
と、いうことで、ちゃんとするにはやっぱりsubstr()ではなくてsplit()を使わないと。
前から何番目の何文字目とかではなくてまず
WIN 9,0,124,0
とバージョン情報をとって、" "で区切って配列にする。
次に","で区切って[9,0,124,0]と配列にしてその先頭の値をとる。

すると10でも20でも100でもOK

スクリプトは
myVer = System.capabilities.version;
//配列_まずは"(半角スペースで切る)"
myVer_Array = new Array();
myVer_Array =myVer.split(" ")   //[win,9.0.124.0]

//9.0.124.0をmyVer_Stringに代入
myVer_String = new String();
myVer_String = myVer_Array[1]

//myVer_Stringをさらに”,”で区切る
get_ver_Array = new Array();
get_ver_Array = myVer_String.split(",");  //[9,0,124,0]

//で、get_ver_Arrayの最初の値をintVerに代入
intVer = get_ver_Array[0];
trace(intVer)

と、いう感じ。
最初に書いてたのは乱暴でした。
反省。

Copyright © painkiller_blog : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新CM

[10/08 イズカワタカノブ]

最新TB

ブログ内検索

アクセス解析

ブログを評価する「ブログレーダー」