facebook twitter hatena line google mixi email

Flash/as3/プログラミングメモ

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

helloworld

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    public class Main extends flash.display.Sprite
    {
        public function Main():void
        {
            var textField:TextField=new TextField();
            textField.text="hello, world.";
            textField.autoSize=TextFieldAutoSize.LEFT;
            txtField.border = true;
            addChild(textField);
        }
    }
}

インスタンス削除

removeChild(_txt);

Spriteクラス分割

*利用側as
import en;
var en1:en = new en;
en1.x = 100;
addChild(en1);

*円クラス
package
{
  import flash.display.Sprite;
  import flash.display.Shape;
  public class en extends Sprite
  {
    public function en()
    {
      var circle:Shape = new Shape();
      circle.graphics.beginFill(0xff0000);
      circle.graphics.lineStyle(0, 0x000000);
      circle.graphics.drawCircle(0, 0, 10);
      circle.graphics.endFill();
      addChild(circle);
    }
  }
}

図形

*四角
var sp:Sprite = new Sprite();
sp.graphics.lineStyle(1, 0xff0000);
sp.graphics.drawRect(0, 0, 100, 100);
addChild(sp);

グラフィック初期化

sp.graphics.lineStyle(1, 0xff0000);
sp.graphics.drawCircle(40, 40, 40);
sp.graphics.clear();

ステージ幅をas側に記述

[SWF(width=240, height=240, backgroundColor=0xFFFFFF)]
public class Main extends Sprite 

画像埋め込み

import flash.display.Bitmap;
[Embed(source="assets/sample.png")]
private var SamplePng:Class;
private var samplePng:Bitmap = new SamplePng();
addChild(samplePng);

画像入りダイアログ

import mx.controls.Alert;
[Embed(source="../../../assets/sample.png")]
private static const SamplePng:Class;
Alert.show("サンプル",
"サンプル",
Alert.OK, null, null, SamplePng);    

イベントで自身のspriteへアクセスする

private function click1(evt:MouseEvent):void {
 trace(evt.target);

spriteなどをキーにして値を入れる

import flash.utils.Dictionary;
import flash.display.Sprite;
import flash.events.MouseEvent;
public var dictionary:Dictionary;
dictionary = new Dictionary(true);
for (var n:uint = 0; n < 3; n++) {
  var sp:Sprite = new Sprite();
  sp.graphics.beginFill(0xFFCC00);
  sp.graphics.drawCircle(40, 40, 40);
  addChild(sp);
  sp.addEventListener(MouseEvent.CLICK, click1, false, 0, true);
  sp.x = n * 50;
  dictionary[sp] = n;
}
private function click1(evt:MouseEvent):void {
  trace(dictionary[evt.target]);
}

オブジェクトのクラス名取得

import flash.utils.getQualifiedClassName;
trace(getQualifiedClassName(obj));

Sprite追加、削除、存在確認

addChild(sp);
removeChild(sp);
contains(sp); // true,false

一定時間ごとにイベントを発生させる

addEventListener(Event.ENTER_FRAME, onEnterFrame);
public function onEnterFrame(event:Event):void{}

フレームレートに依存させず一定時間ごとにイベントを発生させる

var wait:uint = setInterval(timerEvent, 300);
public function timerEvent():void{}

16進数変換

var i:int = 15;
trace(i.toString(16)); // f

10進数変換

parseInt(string, 16));

色文字列変換

var color:Number = 0x00ff00;
var color16:String = String("000000" + color.toString(16)).substr(-6);

キャスト

String(10);

vector型の使い方

var vec:Vector.<String> = new Vector.<String>();
vec[0] = "test";
var vec2:Vector.<Number> = new Vector.<Number>();
vec2[0] = 1;

特定のキーのみ削除

var obj = {"hoge" : "hogehoge", "piyo" : "piyopiyo"};
delete obj.hoge;

flashvarsパラメータにアクセス

var vars:Object = loaderInfo.parameters;

as2のgetURL的なものをas3で再現

import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.events.MouseEvent;
public class Main extends sprite {
  public function Main() {
    // マウスクリックイベントハンドラ設定
    addEventListener(MouseEvent.CLICK, onClick);
  }
  // マウスクリックイベント
  public function onClick(event:MouseEvent):void
  {
    // URLRequestを設定
    var request:URLRequest = new URLRequest("http://www.google.com");
    // 実際にページに飛ぶ
    navigateToURL(request);
  }
}

array中の要素を削除

var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");
var spliced:Array = vegetables.splice(2, 2);
trace(vegetables); // spinach,green pepper,avocado
trace(spliced);    // cilantro,onion
vegetables.splice(1, 0, spliced);
trace(vegetables); // spinach,cilantro,onion,green pepper,avocado

objectのプロパティ有無確認

var obj:Object = { a:"foo", b:"bar" };
trace(obj.hasOwnProperty('a')); //true

手動でイベント発生(dispatchEvent()

sprite1.addEventListener(MouseEvent.CLICK, clickSprite1);
sprite1.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
// clickイベント発生
function clickSprite1(event:MouseEvent):void {
  trace(event.type);
}

ヒアドキュメント

text.htmlText = <><![CDATA[
<a href='/' target='_blank'><font color='#0000ff'><u>text</u></font></a>
]]></>;

リンク集

as3メモ http://www.saturn.dti.ne.jp/~npaka/flash/as30/index.html

注意

as3プロジェクトでは、Alertなどのmx.controls.*は利用できない