|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2009
Сообщений: 173
|
Определить координаты угла в момент "rotation"
Всем привет !
var cont:MovieClip = new MovieClip(); var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(color); mc.graphics.drawRect(-50, -50 ,100,100); cont.addChild(mc); addChild(cont); // теперь мне нужно двигать обьект "cout" так что-б верхний правый угол обекта "mc" всегда был на мышке ! addEventListener(Event.ENTER_FRAME,test); function test(event:Event):void { cont.x = mouseX-(cont.width/2); cont.y = mouseY+(cont.height/2); } // все работает хорошо - но когда я сделаю cont.rotation = 30; // я уже не попадаю в верхний правый угол . Последний раз редактировалось _moscow; 02.11.2009 в 10:24. |
|
|||||
Banned
Регистрация: Jun 2009
Сообщений: 298
|
var cont:MovieClip = new MovieClip(); var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0x00ff00); mc.graphics.drawRect(0,0 ,100,100); mc.graphics.endFill(); mc.x = -mc.width/2; mc.y = -mc.height/2; cont.addChild(mc); addChild(cont); // теперь мне нужно привязать к мышке верхний правый угол обекта "cont" cont.x = mouseX-(cont.width/2); cont.y = mouseY+(cont.height/2); // все работает хорошо - но когда я сделаю cont.addEventListener(Event.ENTER_FRAME,test); // я уже не попадаю в верхний правый угол . // обьект "mc" должен всегда быть по центру обьекта "cont" function test(event:Event):void { event.target.rotation+=1; } |
|
|||||
Регистрация: May 2009
Сообщений: 173
|
Artic Спасибо но это не то , я отредактировал первый пост - так как плохо обьяснил суть проблемы !
|
|
|||||
Banned
Регистрация: Jun 2009
Сообщений: 298
|
var cont:MovieClip = new MovieClip(); var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0x00ff00); mc.graphics.drawRect(-100,0 ,100,100); mc.graphics.endFill(); cont.addChild(mc); addChild(cont); // теперь мне нужно привязать к мышке верхний правый угол обекта "cont" cont.x = mouseX cont.y = mouseY // все работает хорошо - но когда я сделаю cont.addEventListener(Event.ENTER_FRAME,test); stage.addEventListener(MouseEvent.MOUSE_MOVE,setContCoord); // я уже не попадаю в верхний правый угол . // обьект "mc" должен всегда быть по центру обьекта "cont" function test(event:Event):void { event.target.rotation+=1; } function setContCoord(event:MouseEvent):void { cont.x = event.stageX cont.y = event.stageY } |
|
|||||
Регистрация: May 2009
Сообщений: 173
|
обьект "mc" всегда должен быть по центру обьекта "cont"
|
|
|||||
Регистрация: May 2009
Сообщений: 220
|
ориентировался по твоему первому посту до редактирования, но, думаю, все равно "вытащишь" из примера что нужно:
package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { private var s:MyRectangle = new MyRectangle(); function Main():void { stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); s.rotation = 30; addChild(s); } private function onMove(e:MouseEvent):void { s.x = mouseX - s.dX; s.y = mouseY - s.dY; s.rotation += 1; } } } package { import flash.display.Sprite; public class MyRectangle extends Sprite { public var dX:Number = 0; public var dY:Number = 0; private var _width:Number; function MyRectangle():void { graphics.beginFill(0); graphics.drawRect(0, 0, 40, 20); _width = width; } public override function set rotation(value:Number):void { dX = Math.cos(value * Math.PI / 180)*_width; dY = Math.sin(value * Math.PI / 180)*_width; super.rotation = value; } } } |
|
|||||
Регистрация: May 2009
Сообщений: 173
|
switcher! Спасибо большое - это почти то что мне нужно !
но мне нужно изминить одну строку в классе "MyRectangle" вот так а если я изминяю я уже не попадаю в верхний правый угол ! что -то у меня нехватает знаний подправить под мои нужды ! Последний раз редактировалось _moscow; 02.11.2009 в 12:37. |
|
|||||
Регистрация: May 2009
Сообщений: 220
|
изменение:
package { import flash.display.Sprite; public class MyRectangle extends Sprite { public var dX:Number = 0; public var dY:Number = 0; private var _radius:Number; private const DELTA_ANGLE:Number = 45; function MyRectangle():void { graphics.beginFill(0); graphics.drawRect(-50, -50, 100, 100); _radius = Math.sqrt(width*width + height*height) >> 1; } public override function set rotation(value:Number):void { dX = Math.cos((value - DELTA_ANGLE) * Math.PI / 180) * _radius; dY = Math.sin((value - DELTA_ANGLE) * Math.PI / 180) * _radius; super.rotation = value; } } } |
|
|||||
Регистрация: May 2009
Сообщений: 173
|
Спасибо switcher! написал тебе благодарность в личку !
|
Часовой пояс GMT +4, время: 11:25. |
|
« Предыдущая тема | Следующая тема » |
|
|