articles

2010 年 4 月 28 日

AS3 最前面にもってくるDisplayObjectContainer

var sprite:Sprite=new Sprite();
sprite.setChildIndex(btn_obj,sprite.numChildren-1);

よくつかうので書いてあった気がするのですが・・・
ひさびさにFlashやると忘れてました。悲しい。

2010 年 1 月 14 日

AS3 getChildByName()

CATEGORYDisplayObjectflash   TAG 1:05 PM

よく
getDefinitionBy〜だとかよくまちがえるのでメモしました。
DisplayObjectContainerクラスのメソッドです。

btn_mc=this.getChildByName("btn_"+id)

昔はこれと何がちがうのか、どういうときにつかうのかよくわからなかったです。

btn_mc=this["btn_"+id]

2009 年 11 月 6 日

Flash flashvarsでハマる。

CATEGORYLoaderinfo   TAG 8:12 PM

信じられないくらいハマってしまいました。
原因はわからないんですが・・・
そもそも loaderInfoかLoaderInfoかってところまで疑いはじめて。

おそらく、CyberDuckで上書きをしない設定になってたので
アップされていなかったのが原因っぽいのですが納得いきません。

パラメータ一覧を出すスクリプトをいれたタイミングでなぜかクリア。
もやもやしてます。

var paramObj:Object=loaderInfo.parameters;
for (var i:String in paramObj) {
	tf.appendText(i + "=" + paramObj[i] + "\n");
}

2009 年 9 月 17 日

AS3 loaderで読み込まれたswfからメインタイムラインにアクセスしたい

loaderで読み込まれたswfからメインタイムラインにアクセスしたいとき。

maintimline=loaderInfo.loader.root as MovieClip;

今日気づいたんですが、

MovieClip(loaderInfo.loader.root);

という書き方もあるんですね。

2009 年 8 月 18 日

AS3 円運動のクラス

円運動をさせる場合、軸をずらしたmcを作りrotationを変更していたのですが
やはり基礎的なところなので作っておきました。

CircleMove.as

package {
	import flash.display.Sprite;
	import flash.events.Event;

	public class CircleMove {
		var my_sprite:Sprite;
		var my_radius:uint
		var my_speed:uint;
		var degree:uint=0;
		var centerX=0;
		var centerY=0;
		var speed:uint;
		function CircleMove(sprite:Sprite,radius,speed) {
			my_sprite=sprite;
			my_radius=radius;
			my_speed=speed;
			centerX=my_sprite.x
			centerY=my_sprite.y
			my_sprite.addEventListener(Event.ENTER_FRAME,move);
		}
		function move(event) {
			var radian = Math.PI/180*degree;
			my_sprite.x=centerX+my_radius*Math.cos(radian);
			my_sprite.y=centerY+my_radius*Math.sin(radian);
			degree+=my_speed;
		}
	}
}

flaファイルは

import CircleMove;
var cm=new CircleMove(ball,100,5);

さらに、JSONで渡したかったので継承したクラスを作成しました。
こんなこと普通しなそう・・・

CircleMove2.as

package {
	public class CircleMove2 extends CircleMove {
		function CircleMove2(obj:Object) {
			my_sprite=obj.sprite;
			my_radius=obj.radius;
			my_speed=obj.speed;
			super(my_sprite,my_radius,my_speed);
		}
	}
}

この場合のflaファイルは

import CircleMove2;

var cm=new CircleMove2({sprite: ball,radius:100,speed:5});

さらに、回転開始のオフセットを設定できるようにしました。
CircleMove3.as

package {
	public class CircleMove3 extends CircleMove2 {
		function CircleMove3(obj:Object) {
			degree=obj.degree;
			super(obj);
		}
	}
}

この場合のサンプルflaファイルは

import CircleMove3;

//リンゲージしたクラスBALL
var ball2=new BALL();
var ball3=new BALL();
prepare(ball2);
prepare(ball3);

//準備用の関数
function prepare(mc:MovieClip){
	mc.x=stage.stageWidth/2;
	mc.y=stage.stageHeight/2;
	addChild(mc);
}

var cm2=new CircleMove2({sprite:ball2,radius:100,speed:5});
var cm3=new CircleMove3({sprite:ball3,radius:100,speed:5,degree:180});//180度から開始

となりました。

2009 年 8 月 11 日

AS3 Event.REMOVED記念日

Event.ADDEDがあればEvent.REMOVEDもありますよね。
今日知りました。
タイトルが変なのは自分で検索しやすいようにです。

test_mc.addEventListener(Event.REMOVED,removeAction);
removeChild(test_mc);

function removeAction(event) {
	trace(event.target.name);
}

こないだテレビでやってたクライマーズハイを見ました。

2009 年 8 月 5 日

AS3 ブレンドモード一覧

よく使うのでメモっておきます。
flash.display.BlendMode

定数 文字列
BlendMode.NORMAL “normal” 通常
BlendMode.LAYER “layer” レイヤー
BlendMode.MULTIPLY “multiply” 乗算
BlendMode.SCREEN “screen” スクリーン
BlendMode.LIGHTEN “lighten” 比較 (明)
BlendMode.DARKEN “darken” 比較 (暗)
BlendMode.DIFFERENCE “difference” 差の絶対値
BlendMode.ADD “add” 加算
BlendMode.SUBTRACT “subtract” 減算
BlendMode.INVERT “invert” 反転
BlendMode.ALPHA “alpha” アルファ
BlendMode.ERASE “erase” 消去
BlendMode.OVERLAY “overlay” オーバーレイ
BlendMode.HARDLIGHT “hardlight” ハードライト

2009 年 7 月 15 日

Event.ADDED記念日

なぜ使ってなかったんでしょうか?Event.ADDED
初めて使う事になりました。存在は知っていたのに。

下記コードは、表示オブジェクト追加時にスケールをもどします。

import caurina.transitions.Tweener;
import caurina.transitions.properties.DisplayShortcuts;
DisplayShortcuts.init();

Tweener.addTween(sample_obj,{time:0,_scale:2});
sample_obj.addEventListener(Event.ADDED,backAddedHandler);

function backAddedHandler(event){
	trace("追加された");
	Tweener.addTween(event.target,{time:1,_scale:1})
}

2009 年 7 月 15 日

AS3 rootが指す場所がメインタイムライン

CATEGORYStage   TAG 2:31 PM

MainTimeLineってクラスってなんだよ。って思いました。
rootってStageオブジェクトtかと思っちゃってました!アブナイ!

MainTimeLineってのはMovieClipを拡張したクラスらしいです。
またこんがらがってきました。
全然理解できてなかったみたいです。

2009 年 6 月 30 日

AS3 LoaderInfoのプロパティ

LoaderInfo → EventDispatcher → Object
なので、すべての表示オブジェクトはLoaderinfoがつかえる?
今回調べたかったのは

for (i=1; i>=girls_num; i++) {
	var loader=new Loader();
	loader.load(new URLRequest(i+".png"));
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
}

function loaderCompleteHandler(event){
	trace("読み込み完了");
	var loader_obj=event.currentTarget.loader;
}

という形で、この LoaderInfo オブジェクトに関係した Loader オブジェクトを取得したかったので
LoaderInfoのプロパティloaderを使いました。
紛らわしい。
調べる事が多くなると思うので、livedocsの内容をまるまる移しておきます。

【転用】
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/LoaderInfo.html

actionScriptVersion : uint [read-only] ロード済みの SWF ファイルの ActionScript バージョンです。
applicationDomain : ApplicationDomain [read-only] 外部 SWF ファイルがロードされると、ロードされたクラスに含まれているすべての ActionScript 3.0 定義は applicationDomain プロパティに格納されます。
bytes : ByteArray [read-only] LoaderInfo オブジェクトに関連付けられているバイト数です。
bytesLoaded : uint [read-only] そのメディアのロード済みのバイト数です。
bytesTotal : uint [read-only] メディアファイル全体の圧縮後のバイト数です。
childAllowsParent : Boolean [read-only] コンテンツ (子) からロードする側 (親) への信頼関係を表します。
content : DisplayObject [read-only] この LoaderInfo オブジェクトに関係したロードされたオブジェクトです。
contentType : String [read-only] ロードされたファイルの MIME タイプです。
frameRate : Number [read-only] ロード済みの SWF ファイルに関する 1 秒ごとのフレーム数を表す公称のフレームレートです。
height : int [read-only] ロードされたファイルの規格高さです。
loader : Loader [read-only] この LoaderInfo オブジェクトに関係した Loader オブジェクトです。
loaderURL : String [read-only] この LoaderInfo オブジェクトによって記述されるメディアのロードを開始した SWF ファイルの URL です。
parameters : Object [read-only] ロード済みの SWF ファイルに提供されるパラメータを表す、名前と値の組を含んだオブジェクトです。
parentAllowsChild : Boolean [read-only] ロードする側 (親) からコンテンツ (子) への信頼関係を表します。
sameDomain : Boolean [read-only] ロードする側とそのコンテンツの間のドメインの関係を次のように表します。ドメインが同じ場合は true、異なる場合は false です。
sharedEvents : EventDispatcher [read-only] セキュリティ境界を越えてイベントを交換するために使用される EventDispatcher インスタンスです。
swfVersion : uint [read-only] ロード済みの SWF ファイルのファイル形式のバージョンです。
url : String [read-only] ロードされるメディアの URL です。
width : int [read-only] ロードされたコンテンツの規格幅です。