![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2010
Сообщений: 14
|
в общем есть муви клип (обычный круг 5х5px) у клипа в Linkage прописано main.Cor
Вот содержимое main/Cor.as package main { import flash.display.MovieClip; import flash.events.*; public class Cor extends MovieClip { var step:int = 1; var o:Boolean = false; var fx,fy,stepx,stepy:Number = 0; function Cor():void { stage.addEventListener(MouseEvent.CLICK,EventMouseClick); stage.addEventListener(Event.ENTER_FRAME,EventEneterFrame); this.fx = this.x; this.fy = this.y; this.x = Math.floor(this.x); this.y = Math.floor(this.y); } function EventMouseClick(eve:MouseEvent):void { this.o=false; this.fx = Math.floor(eve.localX); this.fy = Math.floor(eve.localY); var tx:Number = fx - this.x; var ty:Number = fy - this.y; var countstep:Number = 0; if (Math.abs(tx) > Math.abs(ty)) { countstep = tx/this.step; this.stepy = ty/countstep; this.stepx = tx/Math.abs(tx); } else { countstep = ty/this.step; this.stepy = ty/Math.abs(ty); this.stepx = tx/countstep; } trace('x: '+((this.stepx*countstep)==tx)); trace('y: '+((this.stepy*countstep)==ty)); this.o=true; } function EventEneterFrame(event:Event):void { if (this.o === true) { if (this.x != this.fx) this.x+=this.stepx; if (this.y != this.fy) this.y+=this.stepy; } } } } |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 19
|
Это проще реализовать твинами. После клика есть координаты мувика и координаты точки, куда его нужно перемещать.
это если делать стандартным твином. Можно и сторонними реализациями. |
|
|||||
|
Lorem ipsum
|
package main { import flash.display.MovieClip; import flash.events.*; import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.None; public class Cor extends MovieClip { private const _speed:uint = 31; // устанавливаем скорость движения в px/сек private var _xTween:Tween; private var _yTween:Tween; public function Cor():void { stage.addEventListener(MouseEvent.CLICK,EventMouseClick); } private function EventMouseClick(e:MouseEvent):void { var dx:int = int(e.localX - this.x); var dy:int = int(e.localY - this.y); var timeForAnimation:Number = Math.sqrt(dx*dx + dy*dy) / _speed; _xTween = new Tween(this, "x", None.easeNone, thix.x, e.localX, timeForAnimation, true) _yTween = new Tween(this, "y", None.easeNone, thix.y, e.localY, timeForAnimation, true) _xTween.addEventListener(TweenEvent.MOTION_FINISH, onFinishHandler); { private function onFinishHandler(e:TweenEvent):void { e.target.removeEventListener(TweenEvent.MOTION_FINISH, onFinishHandler); _xTween = null; _yTween = null; { } }
__________________
Поймай яблоко 2! |
|
|||||
|
еще, как вариант без сторонних твинов, имхо для таких вещей без них спокойнее
package main { import flash.display.*; import flash.events.*; public class Cor extends MovieClip { private var clickX:Number; private var clickY:Number; function Cor():void { //круг graphics.beginFill(0x0); graphics.drawCircle(0, 0, 5); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(event:Event):void { removeEventListener(Event.ADDED_TO_STAGE, onStage); stage.addEventListener(MouseEvent.CLICK, onStageClick); addEventListener(Event.ENTER_FRAME, onCorEneterFrame); } private function onStageClick(eve:MouseEvent):void { clickX = stage.mouseX; clickY = stage.mouseY; } private function onCorEneterFrame(event:Event):void { x += (clickX - x) / 4;//4 - на глаз, на вкус y += (clickY - y) / 4; } } } |
|
|||||
|
Lorem ipsum
|
Тут уж дело стиля =)
Мне напротив спокойней организовать твин по случаю, подтереть его после всех дел и никаких забот. Кстати — в твоем примере стиль анимации будет типа easeOut. Но это красиво =) Некрасиво только то, что анимация уже закончилась, а ENTER_FRAME еще работает, да еще и считает там что-то уже бесполезное. Но и это решается: проверил, выровнял, отписался. Просто надо это все учесть.
__________________
Поймай яблоко 2! |
|
|||||
|
.
|
Улыбнуло. Насколько помню, у круга есть радиус и длина окружности.
Последний раз редактировалось dimarik; 27.02.2010 в 02:08. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|