CodeRest†
#htmlinsert(flash,swf=clock.swf,bgcolor=#FFFFFF,name=flashAbout_small,width=300,height=50);
var tf:TextField = new TextField();
addChild(tf);
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER,updateTime);
timer.start();
function updateTime(e:Event){
var currentTime:Date = new Date();
tf.text = zeroNum(currentTime.hours)+":"+zeroNum(currentTime.minutes)+":"+zeroNum(currentTime.seconds);
}
function zeroNum(num:int):String{
return (num<10)?"0"+num:""+num;
}
sprintf のようなもの†
http://svn.coderepos.org/share/lang/actionscript/sprintf/sprintf.as
var_dump のようなもの†
http://www.flexer.info/2008/06/25/dump-debug-method-like-var_dump-function-in-php-and-debug-class/
import com.flexer.Debug;
trace(Debug.dump(hogehoge));
traceの出力を FireFox で†
https://addons.mozilla.org/ja/firefox/addon/3469
正規表現†
var result:Array = str.match(/(hoge)/);
trace(result[1]);
str = str.replace(/mein/g,"main");
配列(結合配列、連想配列)†
初期化†
var array1:Array = ["a","b","c"];
var hash:Object = {key1:"value1",key2:"value2"};
配列総なめ(カウントがいる場合)†
for (var i:int=0; i< array.length; ++i){
trace(i + ":" + array[i]);
}
連想配列(結合配列)の値のみ†
for each(var value:Object in array){
trace(value);
}
結合配列のキーと値†
for (var key:String in array){
var value:Object = array[key];
trace(key + ":" + value);
}
Drag&Drop†
object.addEventListener(MouseEvent.MOUSE_DOWN, onDrag);
ドラッグイベント†
private function onDrag(e:MouseEvent):void{
switch(e.type){
case MouseEvent.MOUSE_DOWN:
e.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,onDrag);
e.currentTarget.stage.addEventListener(MouseEvent.MOUSE_UP,onDrag);
e.currentTarget.startDrag(【必要に応じて動く範囲を規定】);
break;
case MouseEvent.MOUSE_UP:
e.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,onDrag);
e.currentTarget.stage.removeEventListener(MouseEvent.MOUSE_UP,onDrag);
e.currentTarget.stopDrag();
break;
}
}
HTMLからの引数†
- .html
<script language="JavaScript" type="text/javascript">
AC_FL_RunContent(
'width', '100%',
'height', '100%',
:
'FlashVars', 'value=3', <=これを追加
'salign', ''
); //end AC code
</script>
adobe†
- 大まかに、fl. / flash. / mx. の3つのパッケージがあり、fl は flash のみ mx は flex のみ flash は双方で共通に使える
- コンパチな as3 を作るなら flash のみを使えばよい
- 依存するものを作った場合には swc レベルまでコンパイルする必要がある
SWF / FLA 仕様†
- BlendMode
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/BlendMode.html
- Bitmap
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/Bitmap.html
- BitmapData
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/BitmapData.html
- FileReference
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/net/FileReference.html
- ビットマップ操作の基礎
http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000242.html
右クリック†
お絵かきツール†
- ActionScript 3 版お絵かきソフト(ペイント)
http://onegame.bona.jp/paint/5/
- FC2
http://fc2blogmanual.blog60.fc2.com/blog-entry-108.html
- FlashCS3でお絵かきツール
http://www.func09.com/wordpress/archives/149
- バケツツールつき
http://nondelion.com/archives/2008/02/01/1740
- eraser
http://kozy.heteml.jp/pukiwiki/index.php?ActionScript3.0%20%A4%AA%B3%A8%A4%AB%A4%AD%A5%C4%A1%BC%A5%EB
PNGを扱う†
画像upload/download†
Flash10のセキュリティ関連†
開発環境関連†
- Sothlink Motion Decompiler 3 (割とよいかも?)
その他†
DispatchEvent†
DispatchEventの使いどころ
子のアニメーションが終わったことを親に知らせる例
使わないやりかた†
Parent.as
import flash.display.Sprite;
public class Parent extends Sprite{
public function Parent():void{
addEventListener("addedToStage",onAdd);
}
private function onAdd(e):void{
removeEventListener("addedToStage",onAdd);
var c:Child = new Child();
c.p = this;
stage.addChild(c);
}
public function end():void{
trace("右端です");
}
}
Child.as
import flash.text.TextField;
public class Child extends TextField{
public var p;
public function Child():void{
this.text = "child";
addEventListener("enterFrame",onEnter);
}
public function onEnter(e){
x++ ;
if (stage && (x > stage.stageWidth)) {
removeEventListener("enterFrame",onEnter);
p.end(); // ← 親のインスタンスを知っていないといけない
}
}
}
使ってみた例†
Parent.as
import flash.display.Sprite;
public class Parent extends Sprite{
public function Parent():void{
addEventListener("addedToStage",onAdd);
}
private function onAdd(e):void{
removeEventListener("addedToStage",onAdd);
var c:Child = new Child();
c.addEventListener("complete",end); // ←リスナーを登録
stage.addChild(c);
}
public function end(e):void{
removeEventListener("complete",end);
trace("右端です");
}
}
Child.as
import flash.text.TextField;
import flash.events.Event;
public class Child extends TextField{
public function Child():void{
this.text = "child";
addEventListener("enterFrame",onEnter);
}
public function onEnter(e){
x++ ;
if (stage && (x > stage.stageWidth)) {
removeEventListener("enterFrame",onEnter);
dispatchEvent(new Event(Event.COMPLETE)); // ←親を知らなくて良い
}
}
}
※ Child.as から親への参照がなくなり、独立性が高まる。
BASIC認証†
下記モジュールを入れる
- as3corelib.swc
- as3crypto.swc
- as3httpclientlib*.swc
private function main():void{
var client:HttpClient = new HttpClient();
var uri:URI = new URI("http://hogehoge.com/secret/");
var request:HttpRequest = new Get();
var _user:String = "test";
var _password:String = "test";
request.addHeader("Authorization","Basic "+Base64.encode(_user+":"+_password));
client.listener.onData = this.dataHandler;
client.request(uri,request);
}
private function dataHandler(e:HttpDataEvent):void{
var str:String = e.readUTFBytes();
trace(str);
}
Flash Player バージョン比率†
http://www.adobe.com/products/flashplatformruntimes/statistics.html