Flash / ActionScript プログラムに関する各種メモ書き:タグ「ActionScript2.0」での検索

Flashのダイナミックテキストに外部HTMLを読み込んで表示させる

1. MC 「my_mc」の中にダイナミックテキスト「my_txt」を用意します。

2. タイムラインに以下のアクションを記述します。

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>タグは省略します。

(これらのタグやコメントは空白改行とみなされるため)

No.866
11/22 09:56

edit

ActionScript2.0

【AS2】【AS3】Flashで現在ローカルかサーバー環境内にあるかを判別する

Flash ActionScript で現在実行している .swf ファイルがローカル環境下なのかサーバー環境下なのかを判別するには…。

「URLの文字列に http:// が含まれるとサーバー環境」というロジックで判別することにします。

【AS3.0】の場合

if ( loaderInfo.url.indexOf("http://") == 0 ){
    //サーバー上
}
else{
    //ローカル
}

【AS2】の場合

if ( _url.indexOf("http://") == 0 ){
    //サーバー上
}
else{
    //ローカル
}
No.841
03/27 15:17

edit

ActionScript2.0
ActionScript3.0

JavaScriptからFlash Action Script(2.0)を呼び出す

JavaScriptからFlash内の任意の関数を呼び出すときには以下のようにします。

まずFlash内の関数 my_func を呼び出したい場合は下記のようにして JavaScriptから呼び出す様の関数 JS_my_func を定義します。

.fla ファイル内に記述(AS2.0)

function my_func(){
    // ここに処理内容を記述
}
import flash.external.ExternalInterface;
ExternalInterface.addCallback("JS_my_func", _root, my_func);

JavaScript内には以下のように記述します。

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);
}

HTMLには以下のように記述します

<a href="#" onclick="test_asfunc();">TEST</a>

参考:http://goo.gl/0r8vh

No.840
03/26 14:54

edit

ActionScript2.0
JavaScript

常に背景を画面にフィットするようウィンドウサイズ変更時に自動で画像をリサイズする

Flashでのリキッドデザインとでも言うのでしょうか、

常に背景を画面にフィットするようウィンドウサイズ変更時に自動で画像をリサイズするサンプルは以下のとおりです。

背景画像(my_mc)を画面にフィットするようにするサンプル

//自動でサイズを変更しない。
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 ファイルは↓からダウンロード

添付ファイル1
No.815
08/23 20:00

edit

添付ファイル

画像
ActionScript2.0

BitmapDataオブジェクトを使って読み込んだ画像をmcヘコピーする

BitmapDataオブジェクトを使って読み込んだ画像をmcヘコピーする

copy_from_mcの画像をtarget_mc へコピーします。(AS2)

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にコピーするたびにメモリを使用します。

コピーされた画像は上に重なるように塗られて行きます。

なので、不要になったら削除するように心がけましょう。


削除するには dispose() します。同時にメモリも解放されます。

またこれを行うと BitmapData オブジェクトのプロパティやメソッドにアクセスできなくなるので、また使用したい場合は再度 new BitmapData() から行います。

bd.dispose();

BitmapData

http://help.adobe.com/ja_JP/AS2LCR/Flash_10.0/help.html?content=00000787.html

No.814
08/11 14:58

edit

ActionScript2.0
画像

あるMCを(ウィンドウ幅をリサイズされても)常にステージの右下に配置する

あるMC(my_mc)をウィンドウ幅をリサイズされても常にステージの右下に配置するには

下記のように記述します

ウィンドウサイズ変更時にイベントを登録(as2)

//自動でサイズを変更しない。
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

No.809
07/28 17:34

edit

ActionScript2.0
Tweener

ActionScript2 でムービークリップの色を変更する

AS2

var my_color = new Color( ターゲットとなるMC );
my_color.setRGB(0xFFFFFF);

です。

No.807
07/05 10:16

edit

ActionScript2.0

ActionScript2 のムービークリップイベント

今更ですが…。

イベントハンドラ     タイミング
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 ムービークリップがタイムラインから消えた。
No.806
07/21 11:13

edit

ActionScript2.0

あるムービークリップ以下の全てのムービークリップを一括削除する

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

No.799
07/07 13:45

edit

ActionScript2.0

読み込んだ画象(外部jpeg)の読み込み完了を検知し、width , height を取得、リサイズする

■ 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/

No.770
05/18 20:00

edit

ActionScript2.0

.fla ファイルからアクションスクリプトを抜き出す

■ flare

http://www.nowrap.de/flare.html

ダウンロードするとコマンドファイル(Macの場合はUnix実行ファイル)が出てくるので

コマンドラインから

flare hogehoge.fla

で実行すると

hogehoge.flr というテキストファイルにアクションスクリプトが抜き出されます。

No.641
08/08 12:55

edit

ActionScript2.0
ActionScript3.0

ActionScript 2.0 で正規表現

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)
添付ファイル1
No.574
07/27 13:41

edit

添付ファイル

正規表現
ActionScript2.0

オブジェクト , 配列の中身を表示させる _dump関数

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


No.573
03/26 14:55

edit

ActionScript2.0

ActionScript で 本番環境でTraceを行う(FlashからJavaScriptのAlert関数を実行)

■ 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

No.514
11/22 09:46

edit

Firefox
ActionScript3.0
ActionScript2.0
JavaScript

Flash ActionScript で外部テキストデータを読み込み表示させる【LoadVars() 】

1. アクションスクリプトで外部テキストデータを読み込むにはLoadVars() オブジェクトを使用します。

読み込み完了の関数を定義して、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");

2. Flashアニメーション上に読み込んだ外部テキストを表示させるには

まず「テキストツール」で「ダイナミックテキスト」を作成します。

名前を「my_txt」とつけます。

これでmy_txtに外部テキストが読み込まれます。

3. HTMLを読み込んで表示させるには

「// 読み込みデータの表示」の次の1行を下記のように書き換えます。

// 読み込みデータの表示
_this.my_txt.html = true;
_this.my_txt.htmlText = rawData;
No.411
06/14 21:07

edit

ActionScript2.0