Flashでクリックした場所を中心に拡大するスクリプトです。ハンドラをclickにしなかったのは、棚の中の商品をクリックしたら違う動きも加えたいからです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.geom.Point; import fl.transitions.Tween; import fl.transitions.easing.*; import fl.transitions.TweenEvent; public class Shelf extends MovieClip { const SCALE:uint = 3; var initPoint:Point; public function Shelf() { // constructor code initPoint = new Point(this.x, this.y); this.addEventListener(MouseEvent.MOUSE_UP, mouse_up, false, 0, true); } private function mouse_up(event:MouseEvent):void { // zoom zoom(); } private function zoom():void { /* Tween無し基本セット this.x -= (this.mouseX * this.scaleX + (this.x - initPoint.x)) * (SCALE / this.scaleX); this.y -= (this.mouseY * this.scaleY + (this.y - initPoint.y)) * (SCALE / this.scaleY); this.scaleX = SCALE; this.scaleY = SCALE; */ var xEnd:Number = this.x - (this.mouseX * this.scaleX + (this.x - initPoint.x)) * (SCALE / this.scaleX); tweener({twMc:this, twValue:"x", twType:Regular.easeOut, twStart:this.x, twEnd:xEnd, twSec:10, twTimeType:false}); var yEnd:Number = this.y - (this.mouseY * this.scaleY + (this.y - initPoint.y)) * (SCALE / this.scaleY); tweener({twMc:this, twValue:"y", twType:Regular.easeOut, twStart:this.y, twEnd:yEnd, twSec:10, twTimeType:false}); tweener({twMc:this, twValue:"scaleX", twType:Regular.easeOut, twStart:this.scaleX, twEnd:SCALE, twSec:10, twTimeType:false}); tweener({twMc:this, twValue:"scaleY", twType:Regular.easeOut, twStart:this.scaleY, twEnd:SCALE, twSec:10, twTimeType:false}); } private function tweener(argObj):void { var twMc:MovieClip = argObj.twMc; var twValue:String = argObj.twValue; var twType:Function = argObj.twType; var twStart:Number = argObj.twStart; var twEnd:Number = argObj.twEnd; var twSec:int = argObj.twSec; var twTimeType:Boolean = argObj.twTimeType; var tw:Tween = new Tween(twMc, twValue, twType, twStart, twEnd, twSec, twTimeType); } } } |