dev.convexstyle.net

MouseEvent in ActionScript 3.0

del.icio.us hatena bookmark

数週間前からようやく最新バージョンの 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();
}
}
}

この記事関連する書物 from Amazon.co.jp

トラックバック

このエントリーのトラックバックURL:
http://www.convexstyle.net/mt/mt-tb.cgi/11

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)