数週間前からようやく最新バージョンの ActionScript 3 を個人的に勉強し始めました。
手始めに、ActionScript というよりは、Object Oriented Programming の基本概念や Java などの本をこの数週間読みこんでいた。今後も引き続きこんな日々が続くと思う。結構、面白い。
Adobe の ActionScript に対する打ち出し方は ActionScript 1, 2 は従来の Flash Designer、ActionScript 3 はプログラム重視の Flash Developer らしいですが、確かに使ってみて、ActionScript 3 はデザインや表現などと絡める場合にはあまり適さず、ActionScript 2 の方が flexibility が 高いような気がする。(少なからず、今までのところ。)もともと売りは大規模なアプリケーションを UI でリッチな形で提供したい場合とか、これまで Java などで開発してたプログラマーの人が Flex で mxml と ActionScript 3 を使用して簡単に Rich Internet Application 開発出来る様にすることだと思うので、ActionScript 3 の流れは実際、理にはかなっているのかと思う。それでも、Adobe のセミナーなどで見て Flash Player 9 の新しい Virtual Machine の処理速度がかなり向上しているようだったので、ActionScript 3 のこれからの可能性は大きく感じる。何より、新しい言語スタイルに触れることは楽しい。
当分、自分への ActionScript 3 の整理を兼ねて、blog を定期更新していこうと思う。
まずは、MouseEvent。
従来のアクションスクリプトでは onRollOver、onRollOut、onRelease、onReleaseOutside などのイベントハンドラを使用していましたが、ActionScript 3 からはこれらは使わず、完全に MouseEvent class を使う。
【ダウンロードファイル】
sample1(fla ファイル):http://www.convexstyle.net/samplefiles/mouseEvent1.zip
sample2(fla ファイル、as ファイル)http://www.convexstyle.net/samplefiles/mouseEvent2.zip
【サンプルソース】
(1)
MovieClip は直接 timeline 上に配置し、addEventListener でマウスイベントタイプによるハンドラを設定する場合(この場合、MovieClip を「convexstyle_mc」とし、MOUSE_DOWN と MOUSE_UP に対するハンドラ内に drag 設定をした。)
(timeline 上) convexstyle_mc.buttonMode = true; convexstyle_mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); convexstyle_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);var rect:Rectangle = new Rectangle(0, 0, stage.stageWidth - convexstyle_mc.width,
stage.stageHeight - convexstyle_mc.height);function mouseDownHandler(event:MouseEvent):void {
convexstyle_mc.startDrag(false, rect);
}
function mouseUpHandler(event:MouseEvent):void {
convexstyle_mc.stopDrag();
}
(2)
リンケージを movieClip class の identifer と見立てることによって、convexstyle class ファイルのみで設定する場合。(この場合、identifer を「convexstyle」とする。)
(timeline上) var c:convexstyle = new convexstyle(); addChild(c);
(class ファイル)
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
public class convexstyle extends MovieClip {
private var rect:Rectangle;public function convexstyle() {
this.buttonMode = true;
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
this.rect = new Rectangle(0, 0, 400 - this.width, 275 - this.height);
}
private function mouseDownHandler(event:MouseEvent):void {
this.startDrag(false, this.rect);
}
private function mouseUpHandler(event:MouseEvent):void {
this.stopDrag();
}
}
}











