2009-09-30

すべてのオブジェクトをremoveChildする

while(numChildren > 0) {  
 removeChildAt(0);  
}

2009-09-18

Progressionでステージのサイズを取得する

public function IndexScene() {
 progression.stage.addEventListener(Event.RESIZE, onResizeFunc);
}

private function onResizeFunc(event:Event):void {
 trace(progression.container.stage.stageWidth);
 trace(progression.container.stage.stageHeight);
}

2009-09-16

イベントリスナ登録時に引数を渡す

// Aパターン
mc.addEventListener(MouseEvent.CLICK, onClick("Test OK."));

function onClick(str:String) {
 return function(event:MouseEvent) {
  trace(str);
 }
}

// Bパターン
mc.str = "Test OK.";
mc.addEventListener(MouseEvent.CLICK, onClick);

function onClick(event:MouseEvent):void {
 trace(event.target.str);
}

パッケージの命名規約

JavaやASのパッケージにはハイフンが使えないので、アンダースコアに置き換える。
// ドメインがab-cd.co.jpの場合
package jp.co.ab_cd

2009-09-14

SoundChannelのSOUND_COMPLETEに注意

SoundChannelの再生を停止すると、次に再生した際にSOUND_COMPLETEが発生しない。
従って、イベントリスナを再登録する必要がある。
snd:Sound = new TestSound();
sch:SoundChannel = new SoundChannel();

public function sndPlay():void {
 sch = snd.play();
 sch.addEventListener(Event.SOUND_COMPLETE, onSndComplete);
}

public function sndStop():void {
 sch.removeEventListener(Event.SOUND_COMPLETE, onSndComplete);
 sch.stop();
}

private function onTimerComplete(event:TimerEvent):void {
 trace("Sound Complete!");
}

2009-09-10

Tweenerの終了時に処理を実行する

import caurina.transitions.Tweener;

Tweener.addTween(this, {time:1, transition:"easeOut", onComplete:onCompleteTest, onCompleteParams:["test", 100]});

function onCompleteTest(str:String, num:uint):void {
 trace(str);
 trace(num);
}

タイマー

1秒毎にイベントを発生させる。
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, timerFunction);
timer.start();
function timerFunction(event:TimerEvent):void {
 // code here
}

XMLをパース

↓こんなXML(test.xml)を作って、
<?xml version="1.0" encoding="UTF-8" ?>


Apple
MacBook Pro
Job


Apple
iPhone 3G
Contact


Apple
Xcode
Develop



Flashでパースする。
var urlLoader:URLLoader = new URLLoader();
var testXML:XML;
var urlRequest:URLRequest = new URLRequest("test.xml");
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event) {
 testXML = XML(urlLoader.data);
 var itemNum = testXML.item.length();
 
 for each (var element:Object in testXML.item) {
  trace(element.maker);
  trace(element.product);
  trace(element.use);
 }
}

正規表現

メールアドレスと電話番号の書式をチェック。
var emailPattern:RegExp = /([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/;
var phonePattern:RegExp = /^\d{2,3}-\d{1,4}-\d{4}$/;

var mailCheck:Boolean = emailPattern.test("aaa@bbb.ccc");
var phoneCheck:Boolean = phonePattern.test("03-1234-5678");

メール送信スクリプトにクエリを送る

var mailVar:URLVariables = new URLVariables();
mailVar.email = "aaa@bbb.ccc";
mailVar.subject = "Test";
mailVar.body = "Hello, world!";

var mailReq:URLRequest = new URLRequest();
mailReq.url = "sendmail.php";
mailReq.data = mailVar;
mailReq.method = URLRequestMethod.POST;
sendToURL(mailReq);

2009-09-09

ボタンのイベントリスナを一括登録

ボタンが30個とかのときに便利。
// ボタンの数だけループしてイベントリスナを登録
for (var i:uint = 1; i < 3; i++ ) {
 this["btn" + i].addEventListener(MouseEvent.CLICK, onClick);
}

// event.targetで処理を分岐
function onClick(event:MouseEvent):void {
 switch (event.target) {
  case btn1:
  //
  break;
  case btn2:
  //
  break;
  case btn3:
  //
  break;
  default:
  //
 }
}

Tweenerで色をトゥイーン

import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;

ColorShortcuts.init();
Tweener.addTween(_mc, {_color:0x264292, time:0.5, transition:"linear"});
※色を戻す時はnull

Tweenerでトゥイーン

毎回忘れるのでコピー用に。
import caurina.transitions.Tweener;
Tweener.addTween(_mc, {x:100, time:0.5, transition:"easein"});

2009-09-01

エンコーディング変換

※Windowsでは文字化けするので注意。
var eucStringUrl = new URLRequest("euc.txt");
var loader:URLLoader = new URLLoader();

loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, loaderComplete);
loader.load(eucStringUrl);

function loaderComplete(event:Event):void {
 var bytes:ByteArray = event.target.data;
 var utf8String:String = bytes.readMultiByte(bytes.length, "euc-jp");
 trace(utf8String);
}