« Stage クラス | Main | blog 直りました »
November 21, 2005
flash.display パッケージのとりあえずのまとめ
これまで紹介してきたクラスは flash.display パッケージに含まれているクラスの主要メンバーです。少し乱暴な言い方をしてしまうと、flash.display パッケージは AS2 での MovieClip が持っていた役割を再編成したものと言えるでしょう。各クラスの役割も明確になり、使いやすくなったのではないかと思います。AS2 には無かったコンセプトがいくつも出てきましたが、AS3 でプログラミングする上では外せない部分ですので実際にいろいろと試してみていただければと思います。まだアルファ版のため ”本当はこう動くはずじゃないかな?” という期待と違う動きをすることもしばしばあります。どうもバグらしいと思ったら時間のあるときで構いませんのでレポートしてください。英語が面倒な方は、当面私宛に送っていただいてもOKです。
説明だけでは分かりにくかったかも、ということで最後に簡単なサンプルコードを載せておきます。(HelloWorld です。ベタで済みません。) サンプルコードでは、コンストラクタがいわゆる main() 関数の代わりをしています!ActionScript3 ではスクリプトだけで Flash アプリケーションが出来てしまうのですね。もう fla ファイルとか mxml ファイルとかの単なる補助ではありません。ここに AS3 の可能性をちょっと感じてしまったりします。
package {
import flash.display.Sprite;
import flash.display.TextField;
import flash.text.TextFormat;
import flash.events.Event;
import flash.events.EventType;
import flash.geom.Point;
import flash.geom.Rectangle;
// Sprite のサブクラスを作成
public class HelloWorld extends Sprite {
// プライベート変数を宣言
private var label:TextField;
private var target:Point = new Point();
// コンストラクタ
public function HelloWorld() {
createLabel();
addEventListener(EventType.ENTER_FRAME, enterFrameListener);
}
// TextField に Hello World を表示させる
private function createLabel():Void {
label = new TextField();
label.text = "Hello World";
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = 0xFF0000;
format.size = 16;
label.setTextFormat(format);
// ディスプレイリストに追加
addChild(label);
}
// enterframe のイベント処理
public function enterFrameListener(event:Event):Void {
var current:Point = label.getBounds(this).topLeft;
if (Point.distance(target, current) < 1) {
resetTarget();
}
label.x += (target.x - label.x) / 8;
label.y += (target.y - label.y) / 8;
}
// ターゲット座標の設定
private function resetTarget():Void {
target.x = Math.random() * stage.stageWidth - 100;
target.y = Math.random() * stage.stageHeight - 10;
}
}
}
Posted by ackie at November 21, 2005 10:40 PM
Trackback Pings
TrackBack URL for this entry:
http://weblogs.macromedia.com/mtadmin/mt-tb.cgi/7605
Comments
??サンプルコードを動作??る????も?少?詳???解説????れ????
Posted by: kikuchi at December 16, 2005 08:17 PM
このブログで勉強させていただいてます。
クラスパッケージの構成変更のためだと思うのですが、上記サンプルソースのままだと「Flash Professional 9 ActionScript 3.0 Preview」環境で動きませんでした。動くように修正したソースを、僕のblog内にエントリさせていただきました。
http://www.trick7.com/blog/2006/07/25-230128.php
こちらのソースを使用させていただきましたので、不都合・僕の誤解等ありましたら記事の削除・修正いたします。よろしくお願い致します。
Posted by: tera at July 26, 2006 01:36 AM
tera さん、こんにちは。
ベータ中の記事は修正の必要なものがたくさんあるのになかなか手がつけられません。ですので修正情報を公開していただけると助かります。トラックバックできるようにしないとですね。
Posted by: ackie at July 31, 2006 05:10 PM