var _this = this; _this.my_mc.my_txt.wordWrap = true; _this.my_mc.my_txt.autoSize = true; var my_load_vars = new LoadVars(); my_load_vars.onData = function(rawData) { trace('読み込み完了 : '+rawData); _this.my_mc.my_txt.html = true; _this.my_mc.my_txt.htmlText = rawData; } my_load_vars.load("data.html");
これで同じ階層の「data.html」を読み込んで表示します。
なお「data.html」の内容ですが<html>タグや<body>タグは省略します。
(これらのタグやコメントは空白改行とみなされるため)
flashのドロップダウンリスト「myComboBox1」のデフォルト値をセット(あらかじめ選択された状態にする)するには
myComboBox1.selectedIndex = 3;
とします。
Flash ActionScript で現在実行している .swf ファイルがローカル環境下なのかサーバー環境下なのかを判別するには…。
「URLの文字列に http:// が含まれるとサーバー環境」というロジックで判別することにします。
if ( loaderInfo.url.indexOf("http://") == 0 ){ //サーバー上 } else{ //ローカル }
if ( _url.indexOf("http://") == 0 ){ //サーバー上 } else{ //ローカル }
JavaScriptからFlash内の任意の関数を呼び出すときには以下のようにします。
まずFlash内の関数 my_func を呼び出したい場合は下記のようにして JavaScriptから呼び出す様の関数 JS_my_func を定義します。
function my_func(){ // ここに処理内容を記述 } import flash.external.ExternalInterface; ExternalInterface.addCallback("JS_my_func", _root, my_func);
JavaScript内には以下のように記述します。
function test_asfunc(){ var id ='hogehoge' var swf = document.all? window[id] : document[id]; alert(swf); ret_val = swf.JS_my_func(); // 引数を渡したければカッコ内に記述 alert(ret_val); }
<a href="#" onclick="test_asfunc();">TEST</a>
参考:http://goo.gl/0r8vh
Flashでのリキッドデザインとでも言うのでしょうか、
常に背景を画面にフィットするようウィンドウサイズ変更時に自動で画像をリサイズするサンプルは以下のとおりです。
//自動でサイズを変更しない。 Stage.scaleMode = "noScale"; //基準点をLeftTop Stage.align = "LT"; //イベントリスナーに登録。 sListener = new Object(); var _this = this; sListener.onResize = function() { // 例:my_mc のサイズを変更する var rt_array = calc_stage_match_width_height(my_mc._width, my_mc._height); my_mc._width = rt_array[0]; my_mc._height = rt_array[1]; }; Stage.addListener(sListener); // ウィンドウにマッチするサイズを返す function calc_stage_match_width_height(width, height){ var rt_array = new Array(); var rt_width = Stage.width; var rt_height = (Stage.width/width)*height; if (rt_height < Stage.height){ rt_height = Stage.height; rt_width = (Stage.height/height)*width; } rt_array[0] = rt_width; rt_array[1] = rt_height; return rt_array; } // 最初にリサイズする var rt_array = calc_stage_match_width_height(my_mc._width, my_mc._height); my_mc._width = rt_array[0]; my_mc._height = rt_array[1];
サンプルの .fla ファイルは↓からダウンロード
import flash.display.Bitmap; import flash.display.BitmapData; var my_width = copy_from_mc._width; var my_height = copy_from_mc._height; var my_bd:BitmapData; my_bd = new BitmapData(my_width, my_height, false, 0xFFFFCC00); my_bd.draw(copy_from_mc); target_mc.attachBitmap(my_bd, _root.getNextHighestDepth());
なお、同じmcにコピーするたびにメモリを使用します。
コピーされた画像は上に重なるように塗られて行きます。
なので、不要になったら削除するように心がけましょう。
またこれを行うと BitmapData オブジェクトのプロパティやメソッドにアクセスできなくなるので、また使用したい場合は再度 new BitmapData() から行います。
bd.dispose();
BitmapData
http://help.adobe.com/ja_JP/AS2LCR/Flash_10.0/help.html?content=00000787.html
あるMC(my_mc)をウィンドウ幅をリサイズされても常にステージの右下に配置するには
下記のように記述します
//自動でサイズを変更しない。 Stage.scaleMode = "noScale"; //基準点をLeftTop Stage.align = "LT"; //イベントリスナーに登録。 sListener = new Object(); var _this = this; sListener.onResize = function() { move_items(); }; Stage.addListener(sListener); function move_items(){ // my_mc var my_x = Stage.width - _this.my_mc._width; var my_y = Stage.height - _this.my_mc._height; my_mc._x = my_x; my_mc._y = my_y; } move_items();
なおこのイベントを削除するには
Stage. removeListener(sListener);
でOK。
AS2 Stageリサイズ ステージに大きさを合わせるクラス
http://icodesnippet.com/snippet/other/as2-stage
var my_color = new Color( ターゲットとなるMC ); my_color.setRGB(0xFFFFFF);
です。
今更ですが…。
イベントハンドラ タイミング MovieClip.onData ムービークリップを読み込みが終わった。 MovieClip.onDragOut このムービークリップの上でマウスダウンしたままカーソルが外へ出て再び戻った。 MovieClip.onDragOver このムービークリップの上でマウスダウンしたままカーソルが外へ出た。 MovieClip.onEnterFrame フレームが進んだ。 MovieClip.onKeyDown キーが押された。(フォーカスがあるとき) MovieClip.onKeyUp 押されたキーが上がった。(フォーカスがあるとき) MovieClip.onKillFocus このムービークリップからフォーカスが移動した。 MovieClip.onLoad ムービークリップが読み込まれて表示された。 MovieClip.onMouseDown マウスボタンが押された。 MovieClip.onMouseMove マウスカーソルが動いた。 MovieClip.onMouseUp マウスボタンが上がった。 MovieClip.onPress このムービークリップがクリックされた。(マウスダウン時) MovieClip.onRelease このムービークリップがクリックされた。(マウスアップ時) MovieClip.onReleaseOutside このムービークリップがプレスされたままカーソルが外へ出てマウスアップした。 MovieClip.onRollOut このムービークリップの外へカーソルが出た。 MovieClip.onRollOver このムービークリップの中にカーソルが入った。 MovieClip.onSetFocus このムービークリップにフォーカスが移った。 MovieClip.onUnload ムービークリップがタイムラインから消えた。
A と B という二つのmc(ムービークリップ)があって、AがBの上の位置しているとき、
Aに隠れているBのボタン等も押すことが出来てしまいます。
そこでAのmcの一番下のレイヤーにカラのmcをセット
タイムラインのアクションを以下のように記述します
this.useHandCursor = false; // ハンドカーソルにならないように。 this.onRelease = function(){} // 空のマウスイベントを指定。
これで重なって下になっているmcのボタンなどは押せなくなります。
http://d.hatena.ne.jp/octech/20080218/1203350491
target_mc 以下のmc(ムービークリップ)を一括削除するには
ActionScript2.0
for (var key:String in target_mc) { target_mc[key].removeMovieClip(); }
ただしこれはActionScriptによって動的に追加したmc のみ削除されます。
(あらかじめステージに配置されたmcは削除されません。)
ステージ上のMCを削除するにはこちら
// ステージ上の my_mc を削除 my_mc.swapDepths(_root.getNextHighestDepth()); my_mc.removeMovieClip();
引用:http://www.trick7.com/blog/2006/04/27-115327.php
■ AS2.0
// カラのムービークリップimage_mc に画象test.jpgを読み込む // image_mc はあらかじめステージ用意しておくこと。 var cliploader_mcl = new MovieClipLoader(); var lisner_obj = new Object(); lisner_obj.onLoadInit = function(m:MovieClip){ trace(m._width); trace(m._height); m._width = 999; m._height = 999; } cliploader_mcl.addListener(lisner_obj); cliploader_mcl.loadClip("test.jpg",image_mc);
MovieClipLoaderクラスのイベントハンドラ onLoadInit 読み込みが完了し,初期設定が行える状態になったときに発生 onLoadComplete 読み込み完了時に発生。まだ大きさや幅などを取得/設定はできない onLoadError 読み込みエラーが発生したときに発生 onLoadStart 読み込み開始時に発生 onLoadProgress 読み込みプロセス中に発生
引用:http://itpro.nikkeibp.co.jp/article/COLUMN/20061018/251030/
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ムービーの重なり順(z-index)をdhtmlより下にするには
<embed src="xxxx.swf" wmode="transparent" /> <param name="wmode" value="transparent"/>
とすればOK。
連想配列(オブジェクト)の配列 をランダムに並び替えるには以下のようなスクリプトを使用します。
function shuffle(list) { var i = list.length; while (--i) { var j = Math.floor(Math.random() * (i + 1)); if (i == j) continue; var k = list[i]; list[i] = list[j]; list[j] = k; } return list; }
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; });
Array _array Button _btn Camera _cam Color _color ContextMenu _cm ContextMenuItem _cmi Date _date Error _err LocalConnection _lc LoadVars _lv Microphone _mic MovieClip _mc MovieClipLoader _mcl NetConnection _nc PrintJob _pj SharedObject _so Sound _sound String _str TextField _txt TextFormat _fmt Video _video XML _xml XMLNode _xmlnode XMLSocket _xmlsocket
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 というテキストファイルにアクションスクリプトが抜き出されます。
loadMovie()で読み込むときは時のonDataイベントが使用できないのでデータ読み込み完了を検知できない。なので setInterval を使って読み込んだmcの高さ(もしくは幅など)の大きさの変化を調べる
MovieClipLoader はデータ読み込み完了を検知できるので、FlashPlayer7以降の環境ではこちらの方が扱いやすいと思われる。
メソッド一覧
メソッド 説明 MovieClipLoader.addListener() MovieClipLoaderオブジェクトのイベントリスナーに登録する。 MovieClipLoader.getProgress() ロード済みのバイト数および合計バイト数を返す。 MovieClipLoader.loadClip() SWFファイルまたはJPEGファイルをムービークリップにロード開始する。 MovieClipLoader.removeListener() MovieClipLoaderオブジェクトのイベントリスナーから消去する。 MovieClipLoader.unloadClip() ロードされたムービークリップを削除する。 リスナーイベント 説明 MovieClipLoader.onLoadComplete ロードされたファイルが完全にダウンロードされたとき。 MovieClipLoader.onLoadError ロードされたファイルがロードに失敗したとき。 MovieClipLoader.onLoadInit ロードしたクリップの先頭フレーム上のアクションが実行されたとき。 MovieClipLoader.onLoadProgress ロード対象のコンテンツがディスクに書き込まれるたびに呼び出される。 MovieClipLoader.onLoadStart ファイルのダウンロードが正常に開始されたとき。
引用:http://oshige.com/flash/note/2005/05/moviecliploader.html
何度も調べてしまうのでメモ
int(AS3で使用可能) 符号付きの整数 初期値:0 範囲:-2,147,483,648 (-2の31乗) 〜 2,147,483,647 (2の31乗 - 1) uint(AS3で使用可能) 符号なし整数 初期値:0 範囲:0 〜 4,294,967,295 (2の32乗 - 1) Number(AS2, AS3で使用可能) 整数、符号なし整数、および浮動小数点数 初期値:NaN 範囲:-9,007,199,254,740,992 (-2の53乗) 〜 9,007,199,254,740,992 (2の53乗)
引用:http://ra66it.net/blog/index.php?ID=575
■ MTASC ActionScriptのコンパイラです。
http://www.mtasc.org/#download
(Windows, Mac, Linux 環境があり、それぞれダウンロードできます。)
主なメリットとしては、
・全てのデータをテキストのASソースファイルで扱うので、CVS開発による大規模開発に向いている。
・画像データは全て外部読み込みなので、画像を作成するデザイナーと、システムを構築するプログラマーでの作業の切り分けができる。(同じFLAファイルを触る必要がない。)
・完全にオブジェクト指向プログラミングに基づいているので、Flash OOPの実践に向いている。swingやiアプリ開発者には馴染みのよいものと思います。
・Macromedia FlashにてCtrl + EnterやShift + F12でコンパイルせずに済み、大量のFLAファイルのコンパイルの際に、batファイルやシェルスクリプト作成で簡便にコンパイルが行える。
・ラッピングが簡単なので、簡単なMacromedia Flexのようなものを作成できる。(Linux版もリリースされています。)
・上記に関連しますが、JSPからのジェネレートも簡単にできる。
・OOPを開発するだけのユーザーであれば、Macromedia Flashを購入する必要がない。
などでしょうか。
引用:http://www.javac.jp/mtasc/
参考:http://codezine.jp/article/detail/298?p=1
http://www.minfish.jp/blog/archives/2005/09/famesactionscri.html
■ SWFAddress
http://www.asual.com/swfaddress/
このページの「Download」からSWFAddressをダウンロードすると、
「doc」ドキュメント、オブジェクトのリファレンス
「src」ソース。ここからコピーして使用する。AS1, AS2 AS3 用それぞれ入っているので使用するASのバージョンにあったものをここからコピーする
「samples」サンプル。この中の「adobe」を見れば使用方法がわかります。
代わりに以下のようにする
import flash.external.ExternalInterface; // ---CAN NOT USE--- getURL('javascript:my_method();'); ExternalInterface.call("function(){ javascript:my_method(); }");
参考:
http://chabudai.sakura.ne.jp/blog/?p=37
http://un-q.net/2007/07/geturl_window_open_swfaddress.html
ActionScript 3.0 では正規表現が標準サポートされていますが、2.0ではされていません。
でも ActionScript2.0 でも正規表現が使いたい!
というときにはこちらを利用します。
http://www.jurjans.lv/flash/RegExp.html
(RegExp_JLott.zipのリンクをクリックしてダウンロード)
// RegExp.as を使った正規表現のテスト // 半角の\マークはバックスラッシュに置き換えて下さい。 str = 'aiueo_[test]kakikukeko(abc123)DATADATA'; //型指定(:String)は記述しないこと var rObj = new RegExp('\\[test\\]'); if (str.match(rObj)) { trace("test1:含んでいます。マッチした文字列:"+RegExp.lastMatch); } else{ trace("test1:マッチしません。"); } // RegExp.as を使った正規表現のテスト // 半角の\マークはバックスラッシュに置き換えて下さい。 str = 'aiueo_[test]kakikukeko(abc123)DATADATA'; rObj = new RegExp('\\(.+\\)'); if (str.match(rObj)) { trace("test2:含んでいます。マッチした文字列:"+RegExp.lastMatch); } else{ trace("test2:マッチしません。"); }
結果
test1:含んでいます。マッチした文字列:[test] test2:含んでいます。マッチした文字列:(abc123)
ActionScript 2.0 用のダンプ関数がWEB上にあまりなかったので作成
// function _dump // Version 0.4 function _dump(data,indent:Number){ if (! indent){indent=0;} if (indent==0){ trace('------------------------- ↓'); } var space:String = ''; for (var key:String in data) { var value = data[key]; if ( typeof(value) == "object" ){ space = ''; for( var i:Number=0; i<indent*8; i++){ space += ' '; } trace( space +key+' : ('+typeof(value)+') : '+value); indent++; _dump(value,indent); indent --; } else{ space = ''; for( var i:Number=0;i<indent*8;i++){ space += ' '; } trace( space +key+' : ('+typeof(value)+') : '+value); } } if ( typeof(data) == 'string' || typeof(data) == 'number' || typeof(data) == 'boolean' || typeof(data) == 'undefined' || typeof(data) == 'null' ){ trace( '名無し'+' : ('+typeof(data)+') : '+data); } if (indent==0){ trace('------------------------- ↑'+"\n"); } }
使い方は
var obj:Object = {x:1, y: "aaa", z: {foo: [1,2,3], bar: {a: 11, b: null, c: true}}}; _dump(obj);
出力結果
------------------------- ↓ x : (number) : 1 y : (string) : aaa z : (object) : [object Object] foo : (object) : 1,2,3 2 : (number) : 3 1 : (number) : 2 0 : (number) : 1 bar : (object) : [object Object] a : (number) : 11 b : (null) : null c : (boolean) : true ------------------------- ↑
不具合などありましたらコメント欄から是非ご指摘くださいませ。
ActionScript 3.0用はこちらにありました。(こちらの方が見やすくていいかも)
http://kjirou.sakura.ne.jp/mt/2007/10/as3_1.html
こちらもAS3用
http://www.libspark.org/wiki/dealforest/Dumper
■ 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
Flashマニュアルによると
・HTTP または HTTPS プロトコルを使用して URL エンコード形式で情報を送る関数と MovieClip メソッドには、getURL()、loadVariables()、loadVariablesNum()、loadMovie()、loadMovieNum() があります。 ・HTTP または HTTPS プロトコルを使用して URL エンコード形式で情報を送信し、ロードする LoadVars メソッドには、load()、send()、および sendAndLoad() があります。 ・HTTP または HTTPS プロトコルを使用して XML 形式で情報を送信し、ロードするメソッドには、XML.send()、XML.load()、および XML.sendAndLoad() があります。 ・TCP/IP ソケット接続を生成し、その接続を使用して XML 形式で情報を送信し、ロードするメソッドには、XMLSocket.connect() と XMLSocket.send() があります。
配列を空にする
var data_array=new Array(); data_array.push("test1"); data_array.push("test2"); data_array.push("test3"); data_array=[];
配列を走査して調べる
http://oshige.com/flash/note/archives/3_actionscript/35_/
マスクをかけたムービークリップ内にダイナミックテキストを配置すると表示されない
という現象に遭遇したので調べたところ仕様のようです。↓
なのでフォント埋め込みにて対応。
http://www.fumiononaka.com/TechNotes/Flash/FN0502002.html
読み込み完了の関数を定義して、load()メソッドを呼べば完了。簡単です。
読み込まれるテキストデータ(test.txt)の内容(例)
テストテキストテストテキストテストテキスト
アクションに記述する内容
var my_load_vars = new LoadVars(); var _this = this; my_load_vars.onData = function(rawData) { trace('読み込み完了 : '+rawData); // 読み込みデータの表示 _this.my_txt.text = rawData; } my_load_vars.load("test.txt");
まず「テキストツール」で「ダイナミックテキスト」を作成します。
名前を「my_txt」とつけます。
これでmy_txtに外部テキストが読み込まれます。
「// 読み込みデータの表示」の次の1行を下記のように書き換えます。
// 読み込みデータの表示 _this.my_txt.html = true; _this.my_txt.htmlText = rawData;