Flash離れ

こんな日がこようとは夢にも思わず。。 12年近くFlash制作をやり続けてきた自分としてはホント悲しい

AndroidOS,iOS用のアプリをネイティブで開発することに面倒さも感じつつもAdobeAIRアプリのパフォーマンスの低さに未来を感じなく成り、

最終的にネイティブ開発に踏み切った。

AndroidはJAVAなので、ActionScript3.0からは移行しやすく しかもネイティブ恩恵を体感したいまは「すごい!もうJAVAで良いよ!」と思わせられた

Objective-Cは今格闘中。。 CPPの書き方を思い出し中。。TableViewをコアな部分まで理解するのはちょっと時間がかかりそう

にしても、他の言語を理解するスピードが比較的早いのは さんざんFlashで出来ない事をなんとか出来るように格闘してきた「工夫するチカラ」

ActionScript3.0学習がそれをもたらしたのだと思う。

ホント、Flash&ActionScript3.0ありがとう

今後は、チラ見だけの付き合いになるかもしれませんが宜しくお願いします。 で、ネイティブアプリに負けないパフォーマンス。。いや、ネイティブ以上の凄い事がやれるように成長して欲しいと願っていますよ。。 本気で

でわ

メモリの開放

//強制的にガベージコレクションさせる
flash.system.System.gc();

リンク情報があればタグで囲む正規表現

// リンク情報があれば<a>タグで囲む正規表現
str = str.replace(new RegExp("((?:https?|ftp)(?::\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+))","g"),"<u><a href=\"$1\" target='_blank'>$1</a></u>");

対象オブジェクト内の子オブジェクトを全て消す

表題の通り、オブジェクト全部消したいときとかに使います

1
2
3
while (this.numChildren > 0) {
     this.removeChildAt(0);
}

SWCコンポーネントの保存場所

環境設定>ActionScript3.0>SWCの追加でもよいのですが。

C:\Program Files (x86)\Adobe\Adobe Flash CS[バージョン]\Common\Configuration\Components\内

においてもよい

カスタムコンポーネントとか、カテゴリ別にフォルダを作って管理してもよい
再起動すると、コンポーネントパネルに反映されます

スタイルシートでAlertの外観を変更する

Alertとかの外観をスタイルシートで変更することが出来ます。
以下のようにスタイルシートで定義するだけなので非常に簡単

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
background-color: #000000;
cornerRadius: 8;
creationCompleteEffect: _Effect;
title-style-name:alertTitle;
color:#cccccc;
font-family:verdana;
font-size:11;
area-fill:#000000;
border-color:#000000;
border-style:solid;
drop-shadow-enabled:true;
shadow-direction:center;
shadow-distance:0;
drop-shadow-color:#000000;
button-style-name:but;
fill-colors:#000000;

魚?鳥?

前回の鳥の群行動のバージョンUP

羽ばたいてるような演出。クリックすると 魚になります

鳥の群行動シミュレーション

オブジェクトを追跡するスクリプトを色々試していたら、鳥の群行シミュレーションぽく表示されるようになったので
ちょっと公開します。
画面クリックすると、鳥の形が変わるので動的に生成してるのだとわかるはず

[Object stage]はどこに?

FlashCS4で開発しているときは気にならなかった
[Object stage]

はじめからあるもんだと思っていたが、Flexで[Object stage]は
CS4と同じような感覚で扱えなかった。

今までは、[this]の親をたどって[Object stage]を見つけていたが、
じつはもっと簡単に定義できたみたい

ソースは以下

1
2
3
4
5
6
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
 
function init(evt:Event = null){
   //コンストラクタ
}

これで、CS4,5と同じようにStage,thisが扱えるようになる。。。 知は力なり

vertualとoverride

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// スーパークラス
public class A{
  public virtual function hoge():void{
    trace("AAAAA");
  }
}
 
// Aを継承したサブクラス
public class B extends A{
  // hoge メソッドを上書き
  public override function hoge():void{
    trace("BBBBB");
  }
}
public class TestClass{
  public static function Main():void{
    var b:B = new B();
    b.hoge();
  }
}

スーパークラスでvirtualをつけたメソッドは、サブクラスでoverrideをつけるとオーバーライドできる。
デフォルトでは効かない。 多分、やたらとoverrideする様な仕様にしないようにですかね