PostgreSQL,MySQLを使って PHPやJSPを経由してインターフェイス部分をFlash で行なっていくブログです。
package {
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
public class TimerExample extends Sprite {
public function TimerExample() {
var myTimer:Timer = new Timer(2000, 5);//delay(msec),発生回数0で無限回数
myTimer.addEventListener("timer", timerHandler);
myTimer.start();
}
public function timerHandler(event:TimerEvent):void {
trace("timerHandler: " + event);
}
}
}
出力:
timerHandler: [TimerEvent type="timer" bubbles=false cancelable=false eventPhase=2]
package {
import flash.display.Sprite;
import flash.text.*;
import flash.events.*;
import flash.utils.Timer;
//マウスイベント処理
public class MouseEvnt extends Sprite {
private var label:TextField; //マウスのイベントを表示するラベル
private var mouseDown:String ="アップ"; //初期
//コンストラクタ
public function MouseEvnt(){
//子供のスプライト
var child:Sprite=new Sprite();
child.graphics.beginFill(0xFFFF80);
child.graphics.drawRect(0,0,240,240);
child.graphics.endFill();
addChild(child);
//ラベルの追加
label=makeLabel("マウスイベント");
child.addChild(label);
//イベントリスナーの追加
child.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
child.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
//タイマーの追加(座標など刻々変化する値を取得するため)
var timer:Timer=new Timer(100,0);//delay(msec),発生回数repeatCount
timer.addEventListener(TimerEvent.TIMER,onTick);
timer.start();
}
//イベントリスナー宣言
//マウスダウンイベントの処理
private function mouseDownHandler(evt:MouseEvent):void {
mouseDown="ダウン";
}
//マウスアップイベントの処理
private function mouseUpHandler(evt:MouseEvent):void {
mouseDown="アップ";
}
//タイマーイベントの処理
private function onTick(evt:TimerEvent):void {
var text:String="";
text+="マウスイベント:"+mouseDown+"\n";
text+="マウス座標:"+Math.floor(mouseX)+","+Math.floor(mouseY)+"\n";
label.text=text;
}
//ラベルの生成
private function makeLabel(text:String):TextField {
var label:TextField=new TextField();
label.text =text;
label.autoSize =TextFieldAutoSize.LEFT;
label.selectable=false;
return label;
}
}
}
package {
import flash.display.Sprite;
public class SimpleButtonExample extends Sprite {
//var button:CustomSimpleButton;
public function SimpleButtonExample() {
var button:CustomSimpleButton = new CustomSimpleButton();
addChild(button);
}
}
}
//---------------------------------------
import flash.display.DisplayObject;
import flash.display.Shape;
import flash.display.SimpleButton;
class CustomSimpleButton extends SimpleButton {
private var upColor:uint = 0xFFCC00;
private var overColor:uint = 0xCCFF00;
private var downColor:uint = 0x00CCFF;
private var size:uint = 80;
public function CustomSimpleButton() {
downState = new ButtonDisplayState(downColor, size);
overState = new ButtonDisplayState(overColor, size);
upState = new ButtonDisplayState(upColor, size);
hitTestState = new ButtonDisplayState(upColor, size * 2);
hitTestState.x = -(size / 4);
hitTestState.y = hitTestState.x;
useHandCursor = true;
}
}
//-----------------------------------------
class ButtonDisplayState extends Shape {
private var bgColor:uint;
private var size:uint;
public function ButtonDisplayState(bgColor:uint, size:uint) {
this.bgColor = bgColor;
this.size = size;
draw();
}
private function draw():void {
graphics.beginFill(bgColor);
graphics.drawRect(0, 0, size, size);
graphics.endFill();
}
}
//-----------------------------------------
this.addChild(myButton);
myButton.addEventListener(MouseEvent.CLICK, clickFunc);
function clickFunc(event:MouseEvent):void {
trace("CLICK!",event.target.name);
}
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
//図形を表示する
public class ScaleXYSample_01 extends Sprite {
//コンストラクタ
public function ScaleXYSample_01() {
//矩形の追加
var square:Sprite=makeRect(100,100,0xEFD87A); //巾(w),高さ(h),塗り色(color)
x=110;//ここをsquare.x=110;にするとずれていく
y=10;//ここをsquare.y=10;にするとずれていく
addChild(square);
square.addEventListener(MouseEvent.CLICK, scale);
}
//関数(メソッド)定義
//矩形の追加
private function makeRect(w:uint,h:uint,color:uint):Sprite {
var square:Sprite=new Sprite();
square.graphics.beginFill(color); //背景色
square.graphics.lineStyle(0,0xFF0000);//線幅・線色
square.graphics.drawRect(x,y,w,h); //XY座標,幅,高さ
square.graphics.endFill(); //塗り潰し終了
return square;
}
private function scale(event:MouseEvent):void {
scaleX *= 1.10;
scaleY *= 1.10;
}
}
}
//メイン1フレームでは
import flash.display.Sprite;
import flash.events.MouseEvent;
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);
square.addEventListener(MouseEvent.CLICK, scale);
function scale(event:MouseEvent):void {
square.scaleX *= 1.10;
square.scaleY *= 1.10;
}
//外部ファイルScaleSample.as
//Document Class:ScaleSample
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class ScaleXYSample extends Sprite { //クラス
private var square:Sprite = new Sprite();
public function ScaleXYSample(){ //コンストラクタ
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);
square.addEventListener(MouseEvent.CLICK, scale);
}
function scale(event:MouseEvent):void {
square.scaleX *= 1.10;
square.scaleY *= 1.10;
}
}
}
メインの1フレームに以下のコードを書いてみた。
function foo() {
var t = getTimer();
var n = 1;
for (var i = 0; i<1000000; i++) {
n += 1;
}
trace(getTimer()-t);
}
foo();
また、Flash9は数値型をint型,uint型,従来のNumber型の
3種類使えるので
int型で実行すると、
function foo() {
var t = getTimer();
var n:int = 1;
for (var i:int = 0; i<1000000; i++) {
n += 1;
}
trace(getTimer()-t);
}
foo();
結果:
Flash7.2 Number型:730msec
Flash8 Number型:680msec
Flash9 Number型:77msec
Flash9 int型:3msec
となり、かなりの差が出た。
また、このスクリプトを
タイムライン変数で処理してみると。
var t0 = getTimer();
var n:int;
for (var i:int; i < 1000000; i++) {
n += 1;
}
t1 = getTimer() - t0;
trace(t1);
Flash9 int型:4msec
Flash7.2 Number型:3355msec
Flash8 Number型:2416msec
となって、
Flash9はローカル変数でもタイムライン変数でもほとんど同じであるが、
Flash7.2,Flash8ではローカル変数を使ったほうが処理スピードが速くなる
結果が出た。