[FlashPlayer10]お尻プルルン
Tags: FlashPlayer10
Flash Player 10で新しく使えるようになったグラフィックメソッドのdrawTrianglesを使ってみた。まだ完全に理解してないのだけど、このメソッドでおそらくポリゴン表面に画像貼付けたりできるようになると思う。画像歪ませるのが簡単になった。
![お尻プルルン [FLASH 10]お尻プルルン](http://boreal-kiss.com/flash/ex/33/astro08.gif)
[FLASH 10]お尻プルルン (要Flash Plaeyer 10)
ソース。
package { /* * Requires Flex SDK 3.0.1 or later to be compiled */ 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="0×0",frameRate="24")] public class Astro08 extends Sprite{ [Embed(source="img/girl.jpg")] private var TestImage:Class; private var img:Bitmap; private var container:Sprite; //true for mouse down, otherwise false. private var flgMouseDown:Boolean; //true for mouse rollover, otherwise false. private var flgMouseOver:Boolean; //drawTriangles private var vertices:Vector.<Number>; private var indices:Vector.<int>; private var uvts:Vector.<Number>; //The origin of springing motion private var initP:Point; //Velocities of springing motion private var velocities:Vector.<Number> = Vector.<Number>([0,0]); public function Astro08(){ img = new TestImage(); initImage(img.width*0.5,img.height*0.5); container.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown); container.addEventListener(MouseEvent.MOUSE_UP,onMouseUp); container.addEventListener(MouseEvent.MOUSE_OVER, onRollOver); container.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]); //Canvas container = new Sprite(); container.x = stage.stageWidth/2 - w/2; container.y = stage.stageHeight/2 - h/2; addChild(container); container.graphics.beginBitmapFill(img.bitmapData); container.graphics.drawTriangles(vertices,indices,uvts); } private function onEnterFrame(e:Event):void{ const SPRING:Number = 0.9; const FRICTION:Number = 0.8; container.graphics.clear(); if(flgMouseDown && flgMouseOver){ vertices[4] = container.mouseX; vertices[5] = container.mouseY; } else{ //Springing motion 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]; } container.graphics.beginBitmapFill(img.bitmapData); container.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; } } }
Related posts:
Title Link
Trackback URL
Comments
One Response to “[FlashPlayer10]お尻プルルン”
Leave a Reply



[…] [FlashPlayer10]お尻プルルン : boreal-kiss.com 応用例のアイデアです(笑) […]