Flash ActionScript で現在実行している .swf ファイルがローカル環境下なのかサーバー環境下なのかを判別するには…。
「URLの文字列に http:// が含まれるとサーバー環境」というロジックで判別することにします。
if ( loaderInfo.url.indexOf("http://") == 0 ){
//サーバー上
}
else{
//ローカル
}
if ( _url.indexOf("http://") == 0 ){
//サーバー上
}
else{
//ローカル
}
ActionScript 3.0
var format = new TextFormat(); format.size = 14; // 文字のポイントサイズ format.color = 0xFF0000; // 文字の色 txtField.defaultTextFormat = format;
ActionScript 2.0
var format = new TextFormat(); format.size = 14; // 文字のポイントサイズ format.color = 0xFF0000; // 文字の色 txtField.setNewTextFormat(format);
■ JavaScriptを実行する方法
// javascript
import flash.external.ExternalInterface;
ExternalInterface.call("function(){ javascript:alert('test from timeline as'); }");
■ JSProxyを使う方法
JSProxy
http://d.hatena.ne.jp/secondlife/20071213/1197472257
を使うと便利です。
Flashのタイムラインアクションに以下を記述。
jsproxy.as をパブリッシュするファイルと同じフォルダに置いておく
import JSProxy;
JSProxy.proxy.$alert('JavaScript from timeline as');
■ 注意点
Windows IE6 の場合、HTML表示後に動的に生成したDOMオブジェクト内にFlashムービーを 貼り付けると、JavaScript実行時に 「NullはNullまたはオブジェクトではありません。」 というエラーが表示されるので注意。 HTMLにFlash貼り付けエリアをあらかじめ用意しておくとよい。
Flashで、swf起動時にhtmlから引数を渡すには以下のようにします。(ActionScript3用)
html側で
<param name="FlashVars" value="hoge=1&fuga=2"> <embed src="hoge.swf" FlashVars="hoge=1&fuga=2" />
Flash側では
var flashVars:Object = this.loaderInfo.parameters;
var hoge:String = flashVars['hoge'];
// traceで確認
trace(hoge);
// javascriptのalertで確認
import flash.external.ExternalInterface;
ExternalInterface.call("function(){ javascript:alert('" + hoge + "'); }");
参考:http://goo.gl/IoMaQ
ムービークリップ「my_mc」にフィルタ「ドロップシャドウ」をかける
var drop : DropShadowFilter = new DropShadowFilter(); my_mc.filters = [drop];
ムービークリップ「my_mc」のフィルタを解除する
my_mc.filters = [drop];
ムービークリップ「hoge_mc」の既存のフィルタを保存する。
// フィルタを保存 my_filters = hoge_mc.filters; // フィルタを解除(空の配列を渡す) hoge_mc.filters = []; // 保存したフィルタを戻す hoge_mc.filters = my_filters;
■ flash.filters
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/DisplayObject.html#filters
■ フィルタの種類
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/filters/package-detail.html
mcがステージに配置されると同時に Tweener アニメーションを実行する場合は
下記関数で読み込み完了を待った方がいいみたいです。
■ mc内のタイムラインアクションに以下を記述
(mc内の my_mc にエフェクトを加える場合)
// load complete
var totalBytes = this.loaderInfo.bytesTotal;
addEventListener(Event.ENTER_FRAME, loadEnterFrame);
function loadEnterFrame(eventObj:Event) {
//trace('this mc loading ...');
if(Object(root).loaderInfo.bytesLoaded == totalBytes) {
// ロード完了
//trace('this mc load complete');
this.removeEventListener(Event.ENTER_FRAME, loadEnterFrame);
Tweener.addTween(my_mc, {alpha:1, time:0.5, transition:"linear" });
}
}
まずは JSON lintで JSONフォーマットの確認
http://www.jsonlint.com/
Json例
[
{
"title_name" : "タイトル" ,
"data_loop" : [
{
"id" : 1 ,
"text_name" : "テキスト1"
} ,
{
"id" : 2 ,
"text_name" : "テキスト2"
}
]
}
]
import com.adobe.serialization.json.JSON;
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(new URLRequest("news.json"));
function completeHandler(e:Event):void
{
var json:String = URLLoader(e.currentTarget).data;
//デコード!!
var news:Array = JSON.decode(json);
//中身拝見
for(var i:int=0;i<news.length;i++)
{
trace(news[i].id, news[i].date, news[i].title, news[i].description);
}
}
引用:http://feb19.jp/blog/archives/000159.php
AS3でrootを参照するにはまず addChild を行って
var m = new Main(); addChild(m);
から
// root を参照 trace( MovieClip(root) );
とします。
例: Main.as
package {
// Import
import flash.display.*;
public class Main extends MovieClip {
public function Main():void {
// ここではまだ root を参照できない
// trace(MovieClip(root).hoge);
}
public function test():void {
trace(MovieClip(root).hoge);
}
}
}
例:test.flaの1フレーム目のフレームアクション
var hoge:String = "aaaaaaaaaaaaaaaaaaaaaaa"; var m = new Main(); addChild(m); m.test();
1. var m = new Main( MovieClip(root) ); または var m = new Main( this ); とする。 2.Main.as のコンストラクタで引数を受け取るようにする
これでコンストラクタでも root を参照できます。
1. ステージ上に空のmcを作成(名前を「空のmc」とする) 2.「ライブラリ」>「空のmc」を右クリックして「プロパティ」 3.「リンケージ」の ・ActionScript用に書き出しにチェック ・1フレーム目に書き出しにチェック ・クラス名を外部 .as のクラス(Main)を指定
これで root を参照できます。
http://code.google.com/p/tweener/
からダウンロード。ダウンロード、解凍してできた .as ファイルを
「 .fla 格納フォルダ」>「caurina」>「transitions」フォルダ内にすべて移動
1. まず Flash内で適当なムービークリップをインスタンス名「test_mc」で作成します。
2. 次にフレームアクションに以下を記述して実行
import caurina.transitions.Tweener;
Tweener.addTween(test_mc, {x:100, y:200, time:1, transition:"linear"});
これで実行。
3. トゥイーンを削除するには
Tweener.removeAllTweens(); // 一括削除 Tweener.removeTweens( test_mc ); // 個別削除
x : Number 【移動先のx座標指定をします】 y : Number 【移動先のy座標指定をします】 alpha : Number 【透明度0(完全な透明)〜 1(完全な不透明)を指定します】 rotation : Number【回転角度を指定します】 _color : uint 【色を0xFFFFFFFFのように指定します】 scaleX : Number 【水平方向の拡大率です】 scaleY : Number 【垂直方向の拡大率です】 time : Number 【実行する秒数0にするとトゥイーンしません】 delay : Number 【実行までの待機時間】 useFrames : Boolean 【time設定の単位を秒にするか、フレームにするか指定しますtrueがフレームで、falseが秒ですデフォルトはfalse】 transition : String 【イージングの種類を指定しますイージングの種類は下記参照】 rounded : Boolean 【トゥイーン中のx座標、y座標を整数にするかの指定ですtrueだと整数、falseだと少数も許可しますデフォルトはfalse】 skipUpdates : Number 【レンダリングをフレーム毎に行うかの指定です0は毎フレーム行います数字を増やすとかくかくした動きになっていきますデフォルトは0】 onStart : Function 【トゥイーン開始時に指定したメソッドが呼び出されます】 onStartParams : Array 【onStartで指定したメソッドにここで指定した配列がパラメータとして渡されます】 onUpdate : Function 【トゥイーン処理でアップデートがかかる度に指定したメソッドが呼び出されます】 onUpdateParams 【onUpdateで指定したメソッドにここで指定した配列がパラメータとして渡されます】 onComplete : Function 【トゥイーン終了時に指定したメソッドが呼び出されます】 onCompleteParams :Array 【onCompleteで指定したメソッドにここで指定した配列がパラメータとして渡されます】 onOverwrite :Function 【addTweenメソッドが多重に呼び出された時に、ここで指定したメソッドが呼び出されます】 onOverwriteParams :Array 【onOverwriteで指定したメソッドにここで指定した配列がパラメータとして渡されます】
JavaScriptで Tweenr : http://tweener.ivank.net
AS3でmovieclipにマウスイベントをつけるには以下のようにする
// 「指カーソル」にする
my_mc.buttonMode = true;
// mouse over
my_mc.addEventListener(MouseEvent.MOUSE_OVER, function(){
trace('mouse over');
});
// MouseEvent.ROLL_OUT にしないと movieclip が入れ子になったときに対応できない
// roll out
my_mc.addEventListener(MouseEvent.ROLL_OUT, function(){
trace('roll out');
});
// mouse down
my_mc.addEventListener(MouseEvent.MOUSE_DOWN, function(){
trace('クリックすると mouse down イベントを削除します');
my_mc.removeEventListener(MouseEvent.MOUSE_DOWN,arguments.callee);
my_mc.buttonMode = false;
});
AS3 でオブジェクト(ハッシュの配列)を複数の条件でソートするには sortOn メソッドを使用します。
以下サンプル
var i:Number,j:Number;
var hoge_array:Array=new Array();
var D:Object = new Object();
hoge_array = [
{
id:10,
title:'aiueo',
text:'あいうえお'
} ,
{
id:10,
title:'kakikukeko',
text:'かきくけこ'
} ,
{
id:3,
title:'sasisuseso',
text:'さしすせそ'
} ,
{
id:99999,
title:'tatituteto',
text:'たちつてと'
} ,
{
id:3,
title:'naninuneno',
text:'漢字'
} ,
];
// ダンプ関数(AS3標準関数ではありません。)
D = new dumper3( hoge_array );
// 1(カラムidを 数値評価、降順ソート) 2(カラムtitleを 文字列評価、昇順ソート)
hoge_array.sortOn(["id","title"],[Array.DESCENDING|Array.NUMERIC,null]);
// 下記の通りにすると正しくソートされない。(文字列昇順ソートの時はnullを渡す必要がある。)
//hoge_array.sortOn(["id","title"],[Array.DESCENDING|Array.NUMERIC,]);
D = new dumper3( hoge_array );
結果
----------------------------------- ↓
0 : (object)
id : (number) : 99999
text : (string) : たちつてと
title : (string) : tatituteto
1 : (object)
id : (number) : 10
text : (string) : あいうえお
title : (string) : aiueo
2 : (object)
id : (number) : 10
text : (string) : かきくけこ
title : (string) : kakikukeko
3 : (object)
id : (number) : 3
text : (string) : 漢字
title : (string) : naninuneno
4 : (object)
id : (number) : 3
text : (string) : さしすせそ
title : (string) : sasisuseso
----------------------------------- ↑
// sortOn パラメーター一覧 // Array.CASEINSENSITIVE 大文字と小文字を区別しない // Array.DESCENDING 下向き(降順) // Array.NUMERIC 数値評価 // Array.RETURNINDEXEDARRAY // メソッドを実行した配列をソートせずに、ソート結果として配列を返す。 // Array.UNIQUESORT //オプションに4またはArray.UNIQUESORTを指定すると、配列をソートする前に配列に同じ値が混ざっていないかどうかをチェックできます。同じ値が混ざっている場合は値の並び替えを行わずに0を返します。
ActionScript3 で以下のコードはエラーとなる
for( var i:Number=0; i<3; i++){
trace('test1');
}
for( var i:Number=0; i<2; i++){
trace('test2');
}
以下のようにするとなおる
for( var i:Number=0; i<3; i++){
trace('test1');
}
for( i=0; i<2; i++){
trace('test2');
}
これはなぜかというと
ActionScriptのローカル変数は、関数単位で管理されている」
http://www.be-interactive.org/?itemid=244
AS3 にはブロックスコープがないよ、という内容です
http://d.hatena.ne.jp/nitoyon/20090122/block_scope_abc
■ flare
http://www.nowrap.de/flare.html
ダウンロードするとコマンドファイル(Macの場合はUnix実行ファイル)が出てくるので
コマンドラインから
flare hogehoge.fla
で実行すると
hogehoge.flr というテキストファイルにアクションスクリプトが抜き出されます。
■ ActionScriptからJavaScriptのalertを利用する。
下記のように記述します。
// ActionScript 3.0
var hoge=500;
import flash.external.ExternalInterface;
ExternalInterface.call("function(){ javascript:alert('hoge'); }");
// ActionScript 2.0
var hoge=500;
getURL("javascript:alert('"+hoge+"');");
■ FireFoxの機能拡張 FlashTracer を利用する。
https://addons.mozilla.org/ja/firefox/addon/flashtracer/
注意:debug versionのフラッシュプレイヤーが必要です。
1. /Library/Application Support/Macromedia/mm.cfg を以下の内容で作成します
ErrorReportingEnable=1 TraceOutputFileEnable=1
2. FlashTracerをインストール後ログファイルの場所を指定します。
例:ユーザー「hogehoge」の場合
:Users:hogehoge:Library:Preferences:Macromedia:Flash Player:Logs:flashlog.txt
参考:http://d.hatena.ne.jp/kasahi/20070531/1180630084