![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 3
|
AS2
Привет. Нужна помощь вот в чём. У нас есть динамически создаваемые объекты, например точки и каждая точка имеет свою координату, своё название и свою ссылку. Как привязать событие, которое происходит при нажатие на точку. Может кто нибудь выложит весь код. ни как не могу понять как привязать клик по точке и чтоб нить произошло, пытался пользоваться addEventListener - не могу понять как он работает и как обрабатывать. Выкладываю код класса class Metka { public var testt:Number; public var container_mc:MovieClip; public function draw ():Void { container_mc=_root.createEmptyMovieClip("myClip"+testt, testt); container_mc.loadMovie("1.png"); // Вот тут надо привязать клик по точке container_mc.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); } public function mouseOverHandler() { trace ("+"); } // Функция создает новый объект этого кдассаа public function add_metka(id,koor_x,koor_y) { testt=id; draw(); koordinat(koor_x,koor_y); } // Функция изменяем место пложение клипа public function koordinat(koor_x,koor_y) { if (koor_x){SetX(koor_x);} if (koor_y){SetY(koor_y);} }// - - - -- public function SetX(koor_x) { container_mc._x=koor_x; }// - - - - - public function SetY(koor_y) { container_mc._y=koor_y; }// - - -- - - } Последний раз редактировалось dudialex; 07.07.2010 в 11:28. |
|
|||||
|
Модрон-ветеринар
|
Вот эта конструкция
вроде из AS3, а не AS2. Вам скорее всего onRollOver нужно использовать. И потом, как только вы загрузите контент в container_mc, все обработчики его событий слетят. Вот тема была буквально недавно: http://www.flasher.ru/forum/showthread.php?t=141869 Решения там тоже есть. Последний раз редактировалось mooncar; 07.07.2010 в 11:40. |
|
|||||
|
Modus ponens
|
class Mark { public var test:number; public var container:movieclip; public function set x(value:Number):Void { this.container._x = value; } public function set y(value:Number):Void { this.container._y = value; } /** * Constructor. * Creates new instance of <code>Mark</code> */ public function Mark() { super(); } public function draw():Void { // Use MovieClipLoader instead this.container = _root.createEmptyMovieClip("myClip" + test, test); this.container.loadMovie("1.png"); // Вот тут надо привязать клик по точке this.container.onRollOver = this.makeDelegate(this.mouseOverHandler); } private function makeDelegate(func:Function):Function { var context:Mark = this; return function():Object { return func.apply(context, arguments); } } public function mouseOverHandler():Void { trace ("+"); } /** * This method creates new <code>MovieClip</code> somewhere... */ public function addMark(id:Number, x:Number, y:Void):Void { this.test = id; this.draw(); this.koordinat(x, y); } /** * Функция изменяет местоположение клипа */ public function position(x:Number, y:Number):Void { if (!isNaN(x)) this.x = x; if (!isNaN(y)) this.y = y; } }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 07.07.2010 в 12:28. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 3
|
Можно прокомментрировать или принцип как это работает описать
|
|
|||||
|
[+4 06.05.14]
|
class Mark { public var test:number; public var container:movieclip; public function set x(value:Number):Void // устанавливает начальную коорд контейнера { this.container._x = value; } public function set y(value:Number):Void // устанавливает начальную коорд контейнера { this.container._y = value; } /** * Constructor. * Creates new instance of <code>Mark</code> */ public function Mark() { super(); } // для красоты public function draw():Void // { // Use MovieClipLoader instead this.container = _root.createEmptyMovieClip("myClip" + test, test); this.container.loadMovie("1.png"); // используем делегат класс для обработки событий в классах, подробнее mx.utils.Delegate сдесь же он использует собственно созданный делегат . this.container.onRollOver = this.makeDelegate(this.mouseOverHandler); } private function makeDelegate(func:Function):Function { var context:Mark = this; return function():Object { return func.apply(context, arguments); } } public function mouseOverHandler():Void { trace ("+"); } /** основная функция создающая клипец с параметрами какиеми надо */ public function addMark(id:Number, x:Number, y:Void):Void { this.test = id; this.draw(); this.koordinat(x, y); } /** * Функция изменяет местоположение клипа, в любой мопмент времени!!! */ public function position(x:Number, y:Number):Void { if (!isNaN(x)) this.x = x; if (!isNaN(y)) this.y = y; } } |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 3
|
Огромное спасибо что помогли.
Выкладываю код для будущих поколений. В первом кадре нашей флеш stop (); var b1= new Metka; b1.add_metka("1","150","160"); var b2= new Metka; b2.add_metka("2","250","100"); Файл Metka.as class Metka { public var testt:Number; public var container_mc:MovieClip; public var container_mc_kartinko:MovieClip; public function draw ():Void { container_mc=_root.createEmptyMovieClip("myClip"+testt, testt); container_mc_kartinko=container_mc.createEmptyMovieClip("kartinko",1); container_mc_kartinko.loadMovie("1.png"); this.container_mc.onPress = this.makeDelegate(this.mouseOverHandler); } private function makeDelegate(func:Function):Function { var context:Metka = this; return function():Object { return func.apply(context, arguments); } } public function mouseOverHandler() { // Тут будет происходить то что нужно при клике getURL("http://ya.ru","_blank"); trace (testt); } // Функция создает новый объект этого кдассаа public function add_metka(id,koor_x,koor_y) { testt=id; draw(); koordinat(koor_x,koor_y); } // Функция изменяем место пложение клипа public function koordinat(koor_x,koor_y) { if (koor_x){SetX(koor_x);} if (koor_y){SetY(koor_y);} }// - - - -- public function SetX(koor_x) { container_mc._x=koor_x; }// - - - - - public function SetY(koor_y) { container_mc._y=koor_y; }// - - -- - - } |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|