act
18.09.2012, 09:07
Всем доброго времени!
Уважаемые знатоки пожалуйста помогите решить задачу.
Есть код:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Shape;
import flash.events.*;
public class Main extends Sprite {
private var offsetX:int,
offsetY:int,
displayObject:DisplayObject;
public function Main():void {
this.init();
}
private function init():void {
var rectDrag:Sprite = new Sprite();
rectDrag.graphics.beginFill(0x000000);
rectDrag.graphics.drawRect(0, 0, 45, 45);
rectDrag.graphics.endFill();
var rect:Sprite = new Sprite();
rect.graphics.lineStyle(1, 0x006600);
rect.graphics.drawRect(0, 0, 400, 400);
rect.graphics.endFill();
var sprite:Sprite = new Sprite();
sprite.y = 300;
sprite.x = 50;
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
rect.addChild(rectDrag);
rectDrag.addEventListener(MouseEvent.MOUSE_DOWN, this.startd);
rectDrag.addEventListener(MouseEvent.MOUSE_UP, this.stopd);
sprite.addChild(rect);
super.addChild(sprite);
}
private function startd(event:MouseEvent):void {
this.displayObject = DisplayObject(event.target);
this.offsetX = event.stageX - this.displayObject.x;
this.offsetY = event.stageY - this.displayObject.y;
super.stage.addEventListener(MouseEvent.MOUSE_MOVE, dragg);
}
private function stopd(event:MouseEvent):void {
super.stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.dragg);
}
private function dragg(event:MouseEvent):void {
this.displayObject.x = event.stageX - this.offsetX;
this.displayObject.y = event.stageY - this.offsetY;
event.updateAfterEvent();
}
}
}
Неправильно работает перемещение по области...
Помогите в чем проблема?
Если убрать:
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
То все нормально двигается.
Уже какой день не могу решить проблему.
Как вообще правильно нужно сделать?
Будьте так любезны подскажите, ка правильно нужно сделать.
Уважаемые знатоки пожалуйста помогите решить задачу.
Есть код:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Shape;
import flash.events.*;
public class Main extends Sprite {
private var offsetX:int,
offsetY:int,
displayObject:DisplayObject;
public function Main():void {
this.init();
}
private function init():void {
var rectDrag:Sprite = new Sprite();
rectDrag.graphics.beginFill(0x000000);
rectDrag.graphics.drawRect(0, 0, 45, 45);
rectDrag.graphics.endFill();
var rect:Sprite = new Sprite();
rect.graphics.lineStyle(1, 0x006600);
rect.graphics.drawRect(0, 0, 400, 400);
rect.graphics.endFill();
var sprite:Sprite = new Sprite();
sprite.y = 300;
sprite.x = 50;
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
rect.addChild(rectDrag);
rectDrag.addEventListener(MouseEvent.MOUSE_DOWN, this.startd);
rectDrag.addEventListener(MouseEvent.MOUSE_UP, this.stopd);
sprite.addChild(rect);
super.addChild(sprite);
}
private function startd(event:MouseEvent):void {
this.displayObject = DisplayObject(event.target);
this.offsetX = event.stageX - this.displayObject.x;
this.offsetY = event.stageY - this.displayObject.y;
super.stage.addEventListener(MouseEvent.MOUSE_MOVE, dragg);
}
private function stopd(event:MouseEvent):void {
super.stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.dragg);
}
private function dragg(event:MouseEvent):void {
this.displayObject.x = event.stageX - this.offsetX;
this.displayObject.y = event.stageY - this.offsetY;
event.updateAfterEvent();
}
}
}
Неправильно работает перемещение по области...
Помогите в чем проблема?
Если убрать:
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
То все нормально двигается.
Уже какой день не могу решить проблему.
Как вообще правильно нужно сделать?
Будьте так любезны подскажите, ка правильно нужно сделать.