Форум 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=150642)

dream'r 15.02.2011 18:14

проблема с функциями и проксёй
 
Делаю всё сейчас на АС2.0
Пишу в классах
Использую com.person13.util.Proxy

проблема в следующем. создаю в цикле кнопки, для каждой назначаю действие при нажатии. должна по идее срабатывать строка :
Код AS1/AS2:

_root.osnMenu["menuText" + i].onRelease = Proxy.create(this, changeLanguage, what_load);

не могу понять в чём проблема может быть ;(
класс имортирован, функция вызываемая существует, параметр тоже. функция публичная.

если не использую проксю, а пишу просто ...onRelease = function(){ changeLanguage(what_load)}; то тоже ни чего не происходит. не могу понять что случилось, что не так идёт. Ошибок не выводится ни каких ;( тоесть даже функция не вызывается, потому что я там трейс поставил - она бы хоть показала, что работает, а так - пусто ;-( ((((
через прокси пробовал вызвать совершенно другую функцию в которой сменяется цвет кнопки - не работает.

_root.osnMenu["menuText" + i] - создаётся всё, переменная работает адекватно.

пожалуйста, подскажите.

Hauts 15.02.2011 18:24

Ctrl + Shift + Enter — посмотрите структуру флэшки, переменные, может поможет.

Ну и трэйсов побольше.

Зачем вам обращение через _root, если вы все в классах пишите?

dream'r 15.02.2011 19:14

дебаг ни чего определённого не дал ;(
трейсы ... сделал ...onRelease(trace(имя_функции)) - выводит undefined .. понятия не имею почему не находит, ведь функция создана.

Добавлено через 1 час 24 минуты
И не понимаю почему при наведении функция срабатывает (не та, которая вызывается через proxy.create а , например, твинлайт)... прошу, пожалуйста подскажите, может я что-то не так делаю?(
в классах пишу второй раз в жизни. до этого работал по большей части с кадрами. в as бывало только писал код, чтобы не наводить путаницу в кадрах.

Hauts 15.02.2011 21:21

Побольше кода покажите?

dream'r 15.02.2011 21:27

Код AS1/AS2:

private function generateOsnMenu(def_lang) 
        {               
                _root.createEmptyMovieClip("osnMenu", _root.getNextHighestDepth());
                _root.osnMenu._y = 18;
                _root.osnMenu._x = _root.rd_logo._x + _root.rd_logo._width + 130;
                var menupunkts:Number = _root.menuXML.firstChild.childNodes.length;
 
                for(i = 0; i < menupunkts; i++){               
                        var osnmenu:MovieClip = _root.osnMenu.attachMovie("menuText", "menuText"+i, _root.osnMenu.getNextHighestDepth());
                        osnmenu.punktText.autoSize = true;
                        osnmenu.punktText.htmlText = true;
 
                        var title = _root.menuXML.firstChild.childNodes[i].attributes["title_ru"];
                        osnmenu.punktText.htmlText = title;
 
                        var what_load = _root.menuXML.firstChild.childNodes[i].attributes["what_load"];
 
                        osnmenu._y = 0;
                        if(i == 0){
                                osnmenu._x = 0;
                        }
                        else{
                                osnmenu._x = _root.osnMenu["menuText"+(i-1)]._x + _root.osnMenu["menuText"+(i-1)]._width + 40;
                        }
 
                        osnmenu.onRollOver = function()
                        {
                                TweenMax.to(this.punktText, 0.5, {tint:"0x000000", ease:Circ.easeOut});
                        }
                        osnmenu.onRollOut = _root.osnMenu["menuText"+i].onReleaseOutside = function(){
                                TweenMax.to(this.punktText, 0.5, {tint:"0x838383", ease:Circ.easeOut});
                        }
                        osnmenu.onRelease =  Proxy.create(this, gotoRazdel);
                }
        }
 
        private function gotoRazdel():Void
        {
                trace("WHAT LOAD ");
        }
}


Hauts 15.02.2011 21:50

А так?
Код AS1/AS2:

private var menuRollOverState:Object;
private var menuRollOutState:Object;
private function generateOsnMenu(def_lang) {
        menuRollOverState = {tint:"0x000000", ease:Circ.easeOut, overwrite : true};
        menuRollOutState = {tint:"0x838383", ease:Circ.easeOut, overwrite : true};
 
        _root.createEmptyMovieClip("osnMenu",_root.getNextHighestDepth());
        _root.osnMenu._y = 18;
        _root.osnMenu._x = _root.rd_logo._x+_root.rd_logo._width+130;
        var menupunkts:Number = _root.menuXML.firstChild.childNodes.length;
 
        for (i=0; i<menupunkts; i++) {
                var osnmenu:MovieClip = _root.osnMenu.attachMovie("menuText", "menuText"+i, _root.osnMenu.getNextHighestDepth());
                osnmenu.punktText.autoSize = true;
                osnmenu.punktText.htmlText = true;
 
                var title = _root.menuXML.firstChild.childNodes[i].attributes["title_ru"];
                osnmenu.punktText.htmlText = title;
 
                var what_load = _root.menuXML.firstChild.childNodes[i].attributes["what_load"];
 
                osnmenu._y = 0;
                if (i == 0) {
                        osnmenu._x = 0;
                } else {
                        osnmenu._x = _root.osnMenu["menuText"+(i-1)]._x+_root.osnMenu["menuText"+(i-1)]._width+40;
                }
                osnmenu.onRollOver = function() {
                        TweenMax.to(this.punktText,0.5,menuRollOverState);
                };
                osnmenu.onRollOut = _root.osnMenu["menuText"+i].onReleaseOutside=function () {
                        TweenMax.to(this.punktText,0.5,menuRollOutState);
                };
                osnmenu.onRelease = Proxy.create(this, menuItemRelease);
                // osnmenu.onRelease = function(){trace(this)};
        }
}
public function menuItemRelease():Void {
        trace("WHAT LOAD ");
}


dream'r 15.02.2011 22:37

к большому сожалению - не работает ;(
если писать тоже самое, что у меня было в кадрах - оно будет работать. вопрос - почему блин в классе не работает. ;-(

Добавлено через 14 минут
Вобще очень странно зачем вы заменили что-то в твинмаксе? при наведении у меня всё отлично работало. А не работало в onRelease.

Hauts 15.02.2011 23:05

Просто наугад вынес объекты с нужными свойствами. Удобнее менять будет.)

dream'r 15.02.2011 23:11

;-( жаль, что ваши правки не привели к правильной работе кода... может можете сказать, что это может быть? просто я говорю - в кадрах этот код заработал бы 100%. в классе - не работает, причину не понимаю.

Hauts 15.02.2011 23:20

Честно скажу — я не знаю.


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

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