AS2の最近のブログ記事

AS2で出来たコンテンツを修正していたら、FuseKitで動かしているものを変更しなければならなくなり、いまごろAS2の話ですみません。

FuseKitでTweenさせているオブジェクトを一時停止させたり、再度再生させる場合です。
下のサンプルでは、3つのムービークリップをFusekitで動かしています。
これらを個別、もしくは同時に一時停止・再生させる場合です。


Actionscript2==========
mc1.slideTo("0",50,1,"linear",{cycles:0})
...


btn.onRollOver = function (){ mcPause(true) }
btn.onRollOut = function (){ mcPause(false) }


private function mcPause(isPause){
    if(isPause){
        //ZigoEngine.pauseTween('ALL'); //全てのTweenを一時停止
        ZigoEngine.pauseTween(mc1, '_y');//mc1の_yのTweenを一時停止
        ZigoEngine.pauseTween(mc2, '_alpha');//mc2の_alphaのTweenを一時停止
        ZigoEngine.pauseTween(mc3, '_brightOffset');//mc3の_brightOffsetのTweenを一時停止
    } else {
        //ZigoEngine.unpauseTween('ALL');//全てのTweenを再度再生
        ZigoEngine.unpauseTween(mc1, '_y');
        ZigoEngine.unpauseTween(mc2, '_alpha');
        ZigoEngine.unpauseTween(mc3, '_brightOffset');
    }
}


他のbute-lab.内のFuseKitに関する記事はこちら

traceで出力させて、見やすいように出力ウィンドウで改行させる(空白1行を入れる)場合、AS2までなら、
trace(newline);
と打っていましたが、AS3.0だとnewlineが怒られることに今日知りました。
代わりに、
trace('');
と入力して改行させます。
今更ですが、AS2でブラー処理させる機会があり、忘れかけていたので、久しぶりのAS2.0のエントリーです。
座標やalphaなどの一般的なFuseと使い方は変わりません。

下のサンプルは、mcにX,Y軸両軸方向に0.5秒でじわーっとブラーをかけるサンプルです。

var f:Fuse = new Fuse();
    f.push({Blur_blur:20, seconds:.5, ease:"easeOutQuad", trigger:true});
    f.target = mc;
    f.start();

※ActionScript2.0ですよ!
サイトアクセス時に、Flashでは何らかのインタラクションで見せることがありますが、よく見る人の場合は、毎回見させられるのは嫌で仕様がありません。
そこでSKIPボタンを付けることもありますが、再アクセスを監視し、その場合には何らかのアクションを飛ばすなどする処理が有効です。

そこでよく使うのがSharedObjectです。下のサンプルでは、SharedObjectにアクセスした年月日を保存しておき、アクセスするたびに保存されているSharedObjectを参照して、新規ユーザーかどうかを判定します。
(下のサンプルでは、その日の2回目以降を再訪問とし、翌日見ると新規ユーザーにする場合です。)

SharedObjectは、PHPやXML,DBを使って、いろいろな情報を保持する仕組みを作るほどのことはなく、手軽にライトな情報を保存させておくには有効です。


myLocalSO = SharedObject.getLocal("access_date");//SharedObjectに保存してあるaccess_dateを取得する

var my_date = new Date();
var Y = my_date.getFullYear();
var M = my_date.getMonth();
var D = my_date.getDate();
if(myLocalSO.data.lastY == Y && myLocalSO.data.lastM == M && myLocalSO.data.lastD == D){
    access = "再訪問";
} else {
    access = "新規ユーザー";
    myLocalSO.data.lastY = Y;
    myLocalSO.data.lastM = M;
    myLocalSO.data.lastD = D;
}

ActionScript3.0では、今まではよく使っていた_xや_alphaなどの「_」がなくなっていたりします。
それらが混乱して間違って使ってしまうのが原因でエラーが出ますが、代表的な間違いやすいものを挙げてみました。


「_」がつかないもの
AS2.0 AS3.0
_root root
_parent parent
_visible visible
_alpha alpha
_width width
_height height
_rotation rotation
_x x
_y y
_currentframe currentFrame
名称が変わったもの
AS2.0 AS3.0
_xmouse mouseX
_ymouse mouseY
_xscale scaleX
_yscale scaleY


bute lab. 内のActionScript3.0関連の記事はこちらから
いつものようにFlashでパブリッシュすると、

『このクラスの名前 'Class名' は、ロードされた別のクラスの名前 'Class名' とコンフリクトします。�』

とエラーが出て、ちゃんとできません!
ついさっきまでできてたし、それから間違っとことはしていないのに!

とFlashさんとMacさんに怒っても始まらず、もう一度asを読んでみるものの、思い当たる節は全くない。

いろいろと調べてみると、みなさんこのコンフリクトエラーでやられているみたいですね。

解決方法としていろいろと書かれていたのは、ASOファイルの削除。
要は、.asファイルで使っているクラスを若干覚えてますから削除してからパブリッシュしましょうってことかなと解釈しました。
そこで、Flashのメニューから「制御」-「ASOファイルを削除してムービーをプレビュー」をしましたが、変わらず。

そんな時は次の手段、importしていた部分を一回削除してから「ASOファイルを削除してムービーをプレビュー」して、
『クラスまたはインターフェイス 'クラス名' をロードできませんでした。�』
と出るものの、当然のことなので、流しておいて、再びimportをアクティブにしてから、「ASOファイルを削除してムービーをプレビュー」をしました。

すると、無事パブリッシュできました。

嫌々結構厄介です。
CS4では何とかなっていると信じています。
FuseKitで、透明度=_alphaの値を変化させることができるalphaToはとっても便利ですが、_alphaの変化+_visibleの変更をあわせたとっても便利ツールがZigoEngineを利用して扱えるfadeInとfadeOutです。

とっても便利ではありますが、fadeInとfadeOutを使うだけでは、場合によってはうまい具合にきれいに見えないので、メモしておきます。

//ActionScript//////////////////////////////////////////////////////////////////

sample_mc.fadeIn(1,"linear");
sample_mc.fadeOut(1,"linear");

上のように書いた場合、
fadeOutは、sample_mcの_alphaを指定時間で0にした後、_visibleをfalseにしてくれます。
fadeInは、sample_mcの_visbleをtrueにして、指定時間で_alphaを100にしてくれます。

しかし、sample_mc._visibleとだけ指定して見えないようにしてあるところにfadeInをさせると、fadeInを開始した瞬間に_visible=trueになることで、_alphaは既に100のままなので、「パッ」と見えてしまうことになります。

そこで、下のように

//ActionScript//////////////////////////////////////////////////////////////////
sample_mc._alpha = 0;
sample_mc.fadeIn(1,"linear");

と書くことで、これを防げます。

Flashで何かを作る時、更新性も考えて文字や画像パス、リンクなど、外部XMLから引っ張って使うこと多数ですが、そんなときにいつも利用するのがXpathです。
Xpathがなかったら発狂して死んでしまうかもってくらい便利です。

Xpathの利用に当たっての準備はxpathを使う//AS2.0を参照してください。

下のサンプルでは、XMLからprivate変数の配列に値を読込みます。
読み込みが完了して、trace(self.dataitems);を実行すると、"はれ","ゆき","吹雪"が出力されます。

いや〜本当にxpath様のおかげでFlashとXMLが仲良くできることを日々痛感しています。

//ActionScript//////////////////////////////////////////////////////////////////

import com.xfactorstudio.xml.xpath.*;

private var dataitems:Array;
private function itemXML(no){
    var self:Controller = this;//Controller.as内で使う場合
    var myXML:XML = new XML();
    myXML.ignoreWhite = true; //空白文字をパスする呪文
    myXML.onLoad = function() {
        self.dataitems = XPath.selectNodesAsString(this,"data/item/")
        trace(self.dataitems);
    }
    myXML.load("src/test.xml");   
}

//XML//////////////////////////////////////////////////////////////////

<?xml version="1.0" encoding="UTF-8"?>
<data>
 <item>はれ</item>
 <item>ゆき</item>
 <item>吹雪</item>
</data>

前回のFuseKitを使う1 //AS2.0に引き続き、FuseKitです。
今回はFuseの動作の繰り返し方法です。

//ActionScript//////////////////////////////////////////////////////////////////

//test_mcの_alphaを1秒間で100にして、また元の値に1秒間で戻る
test_mc.alphaTo(100,1,"linear",{cycles:2})

//test_mcの_alphaを1秒間で100にして、また元の値に1秒間で戻る動作を永遠に続ける
test_mc.alphaTo(100,1,"linear",{cycles:0})

//test_mcの_scaleを1秒間で10にして、また元の値に1秒間で戻る
test_mc.scaleTo(10,1,"linear",{cycles:2})

//test_mcの_tint(色)を5秒待ってから、1秒間で白(#ffffff)にして、また元の色に1秒間で戻る
test_mc.tintTo(0xffffff,1,"linear",5,{cycles:2})
最近はイージングをつけた動きは全てFuseKitでコントロールしていますが、FuseKitの使い方を記録していなかったのでここに書いておきます。

FuseKitの導入については、ごくごく簡単ながらFuse Kitをインストール //AS2.0を参照してください。

書き方は何パターンかありますが、多く使っているパターンです。
TweenクラスのonMotionFinishedのように、動作終了を取ることは多いと思うので、それも下に書いておきます。
動作終了の動きが不要な場合は、
f.push({func:callback,args:no})
を削除してください。


//ActionScript//////////////////////////////////////////////////////////////////

var f:Fuse = new Fuse();
    f.target = contents_mc;//ターゲットMC名
    f.duration = 1;//継続時間
    f.push({_alpha:0, ease:"linear"});//変化させたいものを _x:0,_y:100, などのようにいくつでも書ける
    f.push({func:callback,args:no});//callbackさせたい時のみpushする。argsでは、callback関数の引数(no)を規定。不要なら『,args:no』を削除する
    f.start();

function callback(){
    trace("callback");
}

xpathを使う//AS2.0

xpathの使い方の記録のため、ここにメモしておきます。
xpathは、XMLからデータを取得する際に、とっても便利に使えます。

xfactorstudio
http://www.xfactorstudio.com/

からダウンロードし、xpathを使うswfと同じフォルダ内にダウンロードしたcomフォルダごとおきます。

使用法はのちほど。
FuseKitの使い方の記録のため、ここにメモしておきます。
ステージ上のbox_mcをbtnのクリック一回あたり規定量ずつ動かします。

//ActionScript//////////////////////////////////////////////////////////////////

//まずはインポートします
import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);

//初期値
box_mc._x = 500;

//ボタンアクション
btn.onRelease = function  () {
   
    //box_mcの_xを-50移動させます
    box_mc.slideTo("-50",null);

    //_yを変化させる場合
    //box_mc.slideTo(null,"-50");
}
価格.com ブロードバンド