package {
import __AS3__.vec.Vector;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
[SWF(width="550",height="400",backgroundColor="0x0",frameRate="24")]
public class Astro08 extends Sprite{
[Embed(source="img/girl.jpg")]
private var TestImage:Class;
private var img:Bitmap;
private var spr:Sprite;
private var flgMouseDown:Boolean;
private var flgMouseOver:Boolean;
private var vertices:Vector.<Number>;
private var indices:Vector.<int>;
private var uvts:Vector.<Number>;
private var initP:Point;
private var velocities:Vector.<Number> = Vector.<Number>([0,0]);
public function Astro08(){
img = new TestImage();
initImage(img.width*0.5,img.height*0.5);
spr.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
spr.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
spr.addEventListener(MouseEvent.MOUSE_OVER, onRollOver);
spr.addEventListener(MouseEvent.MOUSE_OUT, onRollOut);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function initImage(w:Number,h:Number):void{
initP = new Point(w/2,h/2);
vertices = Vector.<Number>([0,0, w,0, initP.x,initP.y, w,h, 0,h]);
indices = Vector.<int>([0,1,2, 1,3,2, 2,3,4, 2,4,0]);
uvts = Vector.<Number>([0,0, 1,0, 1/2,1/2, 1,1, 0,1]);
spr = new Sprite();
spr.x = stage.stageWidth/2 - w/2;
spr.y = stage.stageHeight/2 - h/2;
addChild(spr);
spr.graphics.beginBitmapFill(img.bitmapData);
spr.graphics.drawTriangles(vertices,indices,uvts);
}
private function onEnterFrame(e:Event):void{
const SPRING:Number = 0.9;
const FRICTION:Number = 0.8;
spr.graphics.clear();
if(flgMouseDown && flgMouseOver){
vertices[4] = spr.mouseX;
vertices[5] = spr.mouseY;
}
else{
var dx:Number = initP.x - vertices[4];
var ax:Number = dx*SPRING;
velocities[0] += ax;
velocities[0] *= FRICTION;
vertices[4] += velocities[0];
var dy:Number = initP.y - vertices[5];
var ay:Number = dy*SPRING;
velocities[1] += ay;
velocities[1] *= FRICTION;
vertices[5] += velocities[1];
}
spr.graphics.beginBitmapFill(img.bitmapData);
spr.graphics.drawTriangles(vertices,indices,uvts);
}
private function onMouseDown(e:MouseEvent):void{
flgMouseDown = true;
}
private function onMouseUp(e:MouseEvent):void{
flgMouseDown = false;
}
private function onRollOver(e:MouseEvent):void{
flgMouseOver = true;
}
private function onRollOut(e:MouseEvent):void{
flgMouseOver = false;
}
}
}
Powered by blog Boreal Kiss 2008.