![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
Здравствуйте все =)
в общем есть 2 класса: главный в котором вычисляются все параметры объектов и добавляются в список отображения, и класс конструктор для объектов, в который передаются только параметры этих объектов, а конструктор на их основе создаёт 3 объекта частично накладываемых друг на друга. мне нужно, чтобы по нажатию мыши на любой из этих 3 объектов и дальнейшему перемещению курсора (до отпускания кнопки), все 3 объекта перетаскивались. искал в инете, наткнулся на такой код: // This code creates a drag-and-drop interaction using the mouse-following // technique. // circle is a DisplayObject (e.g. a MovieClip or Sprite instance). import flash.events.MouseEvent; var offsetX:Number; var offsetY:Number; // This function is called when the mouse button is pressed. function startDragging(event:MouseEvent):void { // Record the difference (offset) between where // the cursor was when the mouse button was pressed and the x, y // coordinate of the circle when the mouse button was pressed. offsetX = event.stageX - circle.x; offsetY = event.stageY - circle.y; // tell Flash Player to start listening for the mouseMove event stage.addEventListener(MouseEvent.MOUSE_MOVE, dragCircle); } // This function is called when the mouse button is released. function stopDragging(event:MouseEvent):void { // Tell Flash Player to stop listening for the mouseMove event. stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragCircle); } // This function is called every time the mouse moves, // as long as the mouse button is pressed down. function dragCircle(event:MouseEvent):void { // Move the circle to the location of the cursor, maintaining // the offset between the cursor's location and the // location of the dragged object. circle.x = event.stageX - offsetX; circle.y = event.stageY - offsetY; // Instruct Flash Player to refresh the screen after this event. event.updateAfterEvent(); } circle.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); circle.addEventListener(MouseEvent.MOUSE_UP, stopDragging); |
|
|||||
|
на скорую руку, типа того
package { import controls.CommonObjects; import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class Main extends Sprite { private var cObject:CommonObjects; private var t:TextField; //CONSTRUCTOR public function Main() { init(); } private function init():void { t = new TextField(); t.border=true; t.autoSize = TextFieldAutoSize.LEFT; addChild(t); cObject = new CommonObjects(); addChild(cObject); cObject.object1.addEventListener(MouseEvent.MOUSE_DOWN, dragObj1); cObject.object2.addEventListener(MouseEvent.MOUSE_DOWN, dragObj2); cObject.object3.addEventListener(MouseEvent.MOUSE_DOWN, dragObj3); cObject.object1.addEventListener(MouseEvent.MOUSE_UP, stopDragObj); cObject.object2.addEventListener(MouseEvent.MOUSE_UP, stopDragObj); cObject.object3.addEventListener(MouseEvent.MOUSE_UP, stopDragObj); } private function dragObj1(e:MouseEvent):void { cObject.startDrag() t.text = "obj_1" } private function dragObj2(e:MouseEvent):void { cObject.startDrag() t.text = "obj_2" } private function dragObj3(e:MouseEvent):void { cObject.startDrag() t.text = "obj_3" } private function stopDragObj(e:MouseEvent):void { cObject.stopDrag() } }//class }//package package controls { import components.Box; import flash.display.Sprite; public class CommonObjects extends Sprite { public var object1:Box; public var object2:Box; public var object3:Box; public function CommonObjects(){ init() } private function init():void { object1 = new Box(); addChild(object1); object1.x = 0 //Object2 object2 = new Box(); addChild(object2); object2.y = object1.height+10; //Object3 object3 = new Box(); addChild(object3); object3.y = object1.height + object2.y+10; } }//class }//package package components { import flash.display.Sprite; import flash.events.MouseEvent; public class Box extends Sprite { //CONSTRUCTOR public function Box() { init(); } private function init():void { var sBox:Sprite = new Sprite(); sBox.graphics.beginFill(0x000000); sBox.graphics.drawRect(0, 0, 30, 30); sBox.graphics.endFill(); addChild(sBox); } }//class }//package |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
да, объекты стали двигаться, спасибо. ещё вопрос возник... эти объекты добавляются в блоке for-each-in при обработке XML файла. и двигается только последний добавленный объект. как сделать чтобы любой из них был подвижным?
|
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Цитата:
Чтобы ответить вам на ваш вопрос, необходимо видеть код.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
|
|||||
|
Ну как же никто не знает. Сам топикстартер обязан знать)
Так вот, присоединять слушателя нужно в самом цикле. Как именно - ваше дело. Цикл выглядеть должен примерно так: for each (var child:XML in xml) { var object:ObjectClass = new ObjectClass(); object.addEventListener("mouseDown", onMouseDown); addChild(object); } Или вообще сделать метод перетаскивания в классе вашего объекта.
__________________
тут я |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
да эту проблему уже смог решить, но все равно спасибо =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|