articles

2009 年 8 月 11 日

AS3 Flash IDEを判別 System.capabilities.playerTypeで

Flashの開発環境をFlash IDEというらしい。普通のFlashのことです。
TweenerのアニメーションをブラウザではなくFlash IDEで見る場合に
Tweenerのタイムスケールを変更して早送りにするサンプルがドキュメントにありました。


import flash.system.Capabilities;

if (flash.system.Capabilities.playerType == "External") Tweener.setTimeScale(0.5)

ちなみにplayerTypeの種類は以下のようです。

“StandAlone” – スタンドアローン Flash Player
“External” – 外部の Player またはムービープレビューモードで使用される Flash Player
“PlugIn” – Flash Player ブラウザプラグイン
“ActiveX” – Microsoft Internet Explorer で使用される Flash Player ActiveX コントロール

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 月 8 日

AS3 TweenerのsetTimeScaleを試すつもりが

CATEGORYactionscriptflashui   2:49 AM

TweenerのsetTimeScaleを試すつもりが
なぜかKeyのことについて色々勉強することとなりました。
へたくそっ!このコード!

key_test1.fla

import caurina.transitions.Tweener;
import KeyEvent;

var key_event=new KeyEvent(test_mc);

stage.addEventListener(MouseEvent.CLICK,clickHandler);

function clickHandler(event) {
	trace("押された");
	Tweener.removeTweens(test_mc);
	test_mc.x=90
	Tweener.addTween(test_mc,{time:10,x:500,transition:"linear"});
}

function setTweenerTimeScale() {
	Tweener.setTimeScale(5);
	trace("setTweenerTimeScale");
}
function setTweenerTimeScaleDefault() {
	Tweener.setTimeScale(1);
	trace("setTweenerTimeScale");
}

KeyEventSample.as

package {
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.display.MovieClip;

	public class KeyEventSample {
		var my_mc:MovieClip;
		public function KeyEventSample(mc) {
			my_mc=mc;
			my_mc.stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
			my_mc.stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
		}

		function keyDownHandler(event) {
			if (event.shiftKey) {
				trace("シフトキーが押された");
			}
			trace("押された");
		}

		function keyUpHandler(event) {
			trace(event.keyCode)
			if (event.keyCode==16) {
				trace("シフトキーが離された");
			}
			trace("離された");
		}
	}
}

KeyEvent.as

package {
	import KeyEventSample;

	public class KeyEvent extends KeyEventSample {
		var mainTimeLine:MovieClip;
		public function KeyEvent(mc) {
			super(mc);
			mainTimeLine=my_mc.root as MovieClip;
		}

		override function keyDownHandler(event) {
			trace("オーバーライドされた関数");
			mainTimeLine.setTweenerTimeScale();
		}
		override function keyUpHandler(event) {
			trace("オーバーライドされた関数");
			stageObj.setTweenerTimeScaleDefault();
		}


	}
}

2009 年 8 月 7 日

Tweener addCallでタイマーの代わりに使ってみたい

TweenerをTimer代わりっぽく使うことができるんですね。
Timerより優れているのは、記述が簡単なのと、間隔をtransitionで変更できるところでしょうか。

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

stage.addEventListener(MouseEvent.CLICK,function(){
	Tweener.removeTweens(test_mc);
	Tweener.addCaller(test_mc, {onUpdate:myFunction, count:30, time:10, transition:"easeInExpo"});
});

function myFunction() {
	test_mc.scaleX=test_mc.scaleY=1;
	Tweener.addTween(test_mc,{time:1,_scale:2});
}

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 共通のTextFormatを複数のクラスで用いてみる。

共通のテキストフォーマットを複数のクラスで用いてみる。
なんかこれ絶対損してます。とりあえずはコレで!

staticを利用することにより
インスタンスをつくらず直接利用できるところがミソです。
定数をいろいろ定義するファイルとしてクラスを利用するという概念も
あるのですね。

package {
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;

	public class TextStyle {
		static var chart_textformat:TextFormat=new TextFormat();
		chart_textformat.font="_sans";
		chart_textformat.size=20;
		chart_textformat.color=0x555555;
		chart_textformat.align=TextFormatAlign.CENTER;
	}
}

これが利用するクラス

package {
	import TextStyle;
	public class SampleClass {
		var chart_textformat=TextStyle.chart_textformat;
        }
}

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] ロードされたコンテンツの規格幅です。