![]() |
|
||||||||||
|
|||||
|
Banned
Регистрация: Nov 2012
Сообщений: 43
|
Проблема в том, что не происходит присваивания события клика мышь на элемент.
То есть в трейс при клике ничего не вылезает. =\ package { import flash.display.*;//MovieClip import flash.events.*; //some import flash.events.MouseEvent; import flash.ui.*; import flash.utils.Timer; public class Min extends MovieClip { var _positionDefX:Number = 100; var _positionDefY:Number = 100; var _setPlus:Number = 0; var _mamaContainer:Sprite; var _timer:Timer; var _mama:Array = new Array(); public function Min() { //Конструктор класса var _wall:wall = new wall(); addChild(_wall); addEventListener(Event.ADDED_TO_STAGE, goFunc); } private function goFunc(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, goFunc); _mamaContainer = new Sprite(); addChild(_mamaContainer); for(var j:int = 0; j < 10; j++){ for(var j2:int = 0; j2 < 10; j2++){ var _eye:Shape = new Shape(); var _size:Number = 30; var _color:Number = Math.random() * 999999; _eye.graphics.beginFill(_color, 0.6); _eye.graphics.drawRect(0 - _size/2, 0 - _size/2, _size, _size); _eye.graphics.endFill(); _eye.x = (35 * j) + 40; _eye.y = (35 * j2) + 40; _eye.rotationY += 30; _eye _mamaContainer.addChild(_eye); } } for(var j3:int = 0; j3 < _mamaContainer.numChildren; j3++){ _mamaContainer.getChildAt(j3).addEventListener(MouseEvent.CLICK, clickListener); //ВОТ ЭТО } stage.addEventListener(MouseEvent.MOUSE_MOVE, updateWindow); } private function clickListener(e:MouseEvent):void{ trace(e.target); trace("hehe"); e.target.removeEventListener(MouseEvent.CLICK, clickListener); } private function updateWindow(e:MouseEvent):void{ for(var i:int = 0; i < _mamaContainer.numChildren; i++){ var some:* = _mamaContainer.getChildAt(i); some.rotationX = ((some.y - mouseY) / stage.width) * -80 ; some.rotationY = ((some.x - mouseX) / stage.height) * 80 ; } } } } |
|
|||||
|
Banned
Регистрация: Nov 2012
Сообщений: 43
|
На шейпы нельзя "вешать"? В этом вся проблема?
..и как их обратить в спрайт? |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
__________________
hauts.ru |
|
|||||
|
Banned
Регистрация: Nov 2012
Сообщений: 43
|
Цитата:
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Сдаюсь.
Хотя нет. package { import flash.display.*;//MovieClip import flash.events.*; //some import flash.events.MouseEvent; import flash.ui.*; import flash.utils.Timer; public class Min extends MovieClip { var _positionDefX:Number = 100; var _positionDefY:Number = 100; var _setPlus:Number = 0; var _mamaContainer:Sprite; var _timer:Timer; var _mama:Array = new Array(); public function Min() { //Конструктор класса var _wall:wall = new wall(); addChild(_wall); addEventListener(Event.ADDED_TO_STAGE, goFunc); } private function goFunc(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, goFunc); _mamaContainer = new Sprite(); addChild(_mamaContainer); for(var j:int = 0; j < 10; j++){ for(var j2:int = 0; j2 < 10; j2++){ var _eye:Shape = new Shape(); var _size:Number = 30; var _color:Number = Math.random() * 999999; _eye.graphics.beginFill(_color, 0.6); _eye.graphics.drawRect(0 - _size/2, 0 - _size/2, _size, _size); _eye.graphics.endFill(); _eye.x = (35 * j) + 40; _eye.y = (35 * j2) + 40; _eye.rotationY += 30; _eye var container:Sprite = new Sprite(); container.addChild(_eye); _mamaContainer.addChild(container); } } for(var j3:int = 0; j3 < _mamaContainer.numChildren; j3++){ _mamaContainer.getChildAt(j3).addEventListener(MouseEvent.CLICK, clickListener); //ВОТ ЭТО } stage.addEventListener(MouseEvent.MOUSE_MOVE, updateWindow); } private function clickListener(e:MouseEvent):void{ trace(e.target); trace("hehe"); e.target.removeEventListener(MouseEvent.CLICK, clickListener); } private function updateWindow(e:MouseEvent):void{ for(var i:int = 0; i < _mamaContainer.numChildren; i++){ var some:* = _mamaContainer.getChildAt(i); some.rotationX = ((some.y - mouseY) / stage.width) * -80 ; some.rotationY = ((some.x - mouseX) / stage.height) * 80 ; } } } }
__________________
hauts.ru |
|
|||||
|
Banned
Регистрация: Nov 2012
Сообщений: 43
|
Цитата:
Добавлено через 41 минуту Прочекал код, в итоге Ваше решение оказалось неверным, слушатель присвоился ко всем и вся модель поведения программы изменилась, попробуйте запустить мой код без ваших изменений, чтобы вы поняли чего я хотел. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
package { import flash.display.*;//MovieClip import flash.events.*; //some import flash.events.MouseEvent; import flash.ui.*; import flash.utils.Timer; public class Min extends MovieClip { var _positionDefX:Number = 100; var _positionDefY:Number = 100; var _setPlus:Number = 0; var _mamaContainer:Sprite; var _timer:Timer; var _mama:Array = new Array(); public function Min() { //Конструктор класса var _wall:wall = new wall(); addChild(_wall); addEventListener(Event.ADDED_TO_STAGE, goFunc); } private function goFunc(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, goFunc); _mamaContainer = new Sprite(); addChild(_mamaContainer); for(var j:int = 0; j < 10; j++){ for(var j2:int = 0; j2 < 10; j2++){ var _eye:Sprite = new Sprite(); var _size:Number = 30; var _color:Number = Math.random() * 999999; _eye.graphics.beginFill(_color, 0.6); _eye.graphics.drawRect(0 - _size/2, 0 - _size/2, _size, _size); _eye.graphics.endFill(); _eye.x = (35 * j) + 40; _eye.y = (35 * j2) + 40; _eye.rotationY += 30; _mamaContainer.addChild(_eye); } } for(var j3:int = 0; j3 < _mamaContainer.numChildren; j3++){ _mamaContainer.getChildAt(j3).addEventListener(MouseEvent.CLICK, clickListener); //ВОТ ЭТО } stage.addEventListener(MouseEvent.MOUSE_MOVE, updateWindow); } private function clickListener(e:MouseEvent):void{ trace(e.target); trace("hehe"); e.target.removeEventListener(MouseEvent.CLICK, clickListener); } private function updateWindow(e:MouseEvent):void{ for(var i:int = 0; i < _mamaContainer.numChildren; i++){ var some:* = _mamaContainer.getChildAt(i); some.rotationX = ((some.y - mouseY) / stage.width) * -80 ; some.rotationY = ((some.x - mouseX) / stage.height) * 80 ; } } } } |
|
|||||
|
[+4 08.09.13]
Регистрация: May 2012
Сообщений: 131
|
Шейпы не являются EventDispatcher'ами. По этой причине они не реагируют на события мыши.
И не нужно вешать на каждый из объектов листенеры, учитывая, что все они предполагаются одинаковыми. Достаточно повесить листенер на родительском контейнере и установить фазу перехвата события. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
неверно.
шейпы являются EventDispatcher'ами, но не являются InteractiveObject'ами |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|