Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   передача параметра функции, при нажатии на мувик (http://www.flasher.ru/forum/showthread.php?t=88689)

Dorin123 28.11.2006 20:00

спасибо :) попробую применить..

Dorin123 28.11.2006 20:15

как можно поюзать класс Proxy в моем случае?

etc 28.11.2006 20:22

Точно также, как и Delegate — по функциональности они одинаковы.

artcraft 28.11.2006 21:49

так же, за исключением способа передачи аргументов:

Класс от iNils-а:
Код:

import ru.inils.Delegate;
var mc:MovieClip = this.createEmptyMovieClip('mc', 1);
with(mc){beginFill(0xFF3366); lineTo(100,0);  lineTo(100,100); lineTo(0, 100); lineTo(0,0); endFill();}
var doItOnPress:Function = function(myMc:MovieClip, pram2:Number){
        trace(this+'    myMc:'+myMc+'    pram2:'+pram2);
}

mc.onPress = Delegate.create(this, doItOnPress, [mc, 123]);

Класс от __etc:
Код:

import ascb.util.Proxy;
var mc:MovieClip = this.createEmptyMovieClip('mc', 1);
with(mc){beginFill(0xFF3366); lineTo(100,0);  lineTo(100,100); lineTo(0, 100); lineTo(0,0); endFill();}
var doItOnPress:Function = function(myMc:MovieClip, pram2:Number){
        trace(this+'    myMc:'+myMc+'    pram2:'+pram2);
}

mc.onPress = Proxy.create(this, doItOnPress, mc, 123);

и там и там в оутпуте будет:
Код:

_level0    myMc:_level0.mc    pram2:123
разница только в наличии квадратных скобок
мне больше нравится без :~)

artcraft 28.11.2006 22:14

точно такого результат можно добиться не импортируя никаких классов,
однако, не смотря на то что кода не стало больше, а от импорта удалось избавиться,
этот способ считается менее правильным:
Код:

var mc:MovieClip = this.createEmptyMovieClip('mc', 1);
with(mc){beginFill(0xFF3366); lineTo(100,0);  lineTo(100,100); lineTo(0, 100); lineTo(0,0); endFill();}
var doItOnPress:Function = function(myMc:MovieClip, pram2:Number){
        trace(this+'    myMc:'+myMc+'    pram2:'+pram2);
}

var self:Object=this;
mc.onPress = function(){self.doItOnPress(this, 123);}


etc 28.11.2006 23:56

artcraft, это костылки в виде дополнительной ссылки, которая, тем не менее, не решает проблем с областью видимостью.

з.Ы. Proxy не мой, автор неизвестен, тем не менее, ему большое спасибо.

artcraft 29.11.2006 00:37

автора зовут Joey Lott
вот его сайт http://www.person13.com/
а тут вся ascb библиотека http://www.person13.com/ascblibrary/

artcraft 29.11.2006 01:25

Цитата:

Сообщение от __etc
не решает проблем с областью видимостьи.

можно немного подробнее,
мне казалось, что в результате и так и так функция doItOnPress вызывается таким образом что this указывает на _level0 ...
в чём конкретно проблема области видимостьи? можно пример?

etc 29.11.2006 01:59

artcraft, ммм, я про твой неправильный способ говорил :)

artcraft 29.11.2006 02:02

И я про него - он точно так функцию вызывает


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

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