Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   можно ли ставить addListener для мувиков? (http://www.flasher.ru/forum/showthread.php?t=60492)

Nucer 12.07.2004 16:59

Чего тебе всё таки нужно то? Скажи конкретно, чем тебя не устраивает onMouseUp и т.п.?

wwwita 12.07.2004 18:25

Nucer,

у нас есть mc1
у mc1 есть onMouseUp
где-то в коде ниже есть mc1.onMouseUp второй раз.

При такой схеме второй onMouseUp замещает первый.

Отсюда 2 выхода:
1. Прописывать в первом onMouseUp функции второго (либо аналогично во второй первого).
2. Сделать так, чтобы они не замещались.

Вот я и хочу узнать реален ли второй выход?

Dindin 12.07.2004 18:38

Ты не понял. Твою проблему проанализировали ипришли к выводу, что ты что-то непл\равильно спланировал. И хотят тебе помочь. Для этого спрашивают - чего ты таким образом хочешь добиться...

wwwita 12.07.2004 22:25

Вложений: 1
хорошо..... :)

В ролях:
- приложение "для чего -- непонятно"
- клип "mc1"
- событие "onMouseUp"
- разработчик "я"
- пользователь-программист "нет пока такого"

Санкт-Петербург. Наши дни.

Разработчик создал приложение с mc1 "для чего -- непонятно".
Для его работы требуется обрабатывать событие "onMouseUp".
Потом разработчик дал это приложение пользователь-программисту для его супер-приложения как

управляющий модуль и сказал: "пользуйся им как своим этим".

Отступление:
Возьмем файлы file.swf и superfile.swf. В последнем напишем fileSwf.loadMovie("file.swf")

либо аналогичный метод. Если в файле file.swf содержится строчка вида

_root["mc1"].onMouseUp = function (){... она будет назначать обработчик для клипа по

соответстсующему адресу. (смотри аттач)

Далее:
А пользователь-программист захотел повесить на mc1 обработчик onMouseUp... тут и возникла

проблема.
Либо пользователю давать какие-то специальные функции надеясь, что он не запутается и не

будет боятся написать лишнюю строчку.

Либо разработчику использовать нестандартные вызовы для стандартных событий, чтобы не

случилась перезагрузка (Нео, ты слышал?) обработчика.

Dindin, так, думаю, ясней. :)

silin 12.07.2004 23:21

если разработчику обработчика позарез надо вешать обработку на объекты принимающего мувика, при этом они с разрабочиком-програмистом (я уже запутался кто из них кто :rolleyes: ) никак не смогут договорится, то ясень день надо ' использовать нестандартные вызовы для стандартных событий'
вариант (правда тока для 6-ки):
в подгружаемом мувике
Mouse.addListener(Mouse);
Mouse.onMouseUp=function(){this.broadcastMessage("onMyMouseUp")}
_root.mc1.onMyMouseUp = function (){trace("i'm working, " + this);}
Mouse.addListener(_root.mc1);

Nucer 13.07.2004 16:00

А ведь можно, только извращённым методом. Вот, на вскидку:
Код:

function addMovieListener( MC:MovieClip , func:Function ):Void
{
        MC.onMouseDown = function ()
        {
                if ( MC.hitTest( MC._parent._xmouse , MC._parent._ymouse , true ) )
                {
                        func.call( this );
                }
        }
}

Что то типа того

wwwita 13.07.2004 19:35

silin, Nucer, спасибо :)

сейчас попробую....

Nucer 13.07.2004 20:29

Или лучше так:
Код:

function addNewListener ( MC:MovieClip , event:String , func:Function ):Void
{
        var was:Function = MC[event];
        MC[event] = function ()
        {
                was.call( this );
                func .call( this );
        }
}

Очень примерно и не гарантирую, что будет работать т.к. во флэше даже не писал

wwwita 14.07.2004 00:05

Вложений: 1
Заработало! :D
Теперь осталось разобраться почему.

silin 14.07.2004 00:21

когда ты по своему сценарию применишь это добро в подгружаемом мувике
(типа addNewListener(_root.mc1, "onMouseDown", alterEvent);)
ссылка на _root.mc1["onMouseDown"] будет null (мс1 появится тока после загрузки)
соответсвенно такой ход не пройдет
а почему работает:
сравни:
var tmp=mc1.onMouseDown;
mc1.onMouseDown=function(){
tmp();
trace("alternative event");
}


Часовой пояс GMT +4, время: 16:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.