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

Alex T 20.04.2006 14:49

класс, функция внутри события
 
подскажите почему не работает:
Код:

class LoadParamsXML {
private function text():String {
                var t:String="okey";
                return t;
}
function generateScene():Void {
                var sceneParamsXML=new XML();
                sceneParamsXML.ignoreWhite = true;
                sceneParamsXML.load("temp.xml");
                sceneParamsXML.onLoad = function(){
                        rootChild = sceneParamsXML.firstChild;
                        trace(text());//выводит undefined
                        trace("ok");//выводит ok               
                        }
        }
}

всем заранне спасибо...

aru 20.04.2006 14:59

У тебя text() берётся от this, то есть в твоём случае от sceneParamsXML, а не от класса LoadParamsXML.

Alex T 20.04.2006 17:13

как же мне тогда правильно сделать?

и почему в описании класса это не работает, а в обычном коде (без класса) работает?

объясните кто нибудь пожалуйста, всем заранее благодарен...

Sneg 20.04.2006 17:26

Код:

import mx.utils.Delegate;

class LoadParamsXML {
  private var sceneParamsXML:XML;
  public function LoadParamsXML(){
          sceneParamsXML=new XML();
          sceneParamsXML.ignoreWhite = true;
  };
               
  private function text():String {
                var t:String="okey";
                return t;
  }
  public function generateScene():Void {
                sceneParamsXML.load("temp.xml");
                sceneParamsXML.onLoad = Delegate(this,onSceneParamsXMLLoad);
        }
        private function onSceneParamsXMLLoad():Void{
                trace(sceneParamsXML.toString());
        };
}

Примерно так (могут быть опечатки, не проверял). Если не хочешь лишних приватных переменных sceneParamsXML, то можно вместо использования Delegate использовать DelegateExt, был на Флеш-Потрошителе около месяца назад (код соотвественно чуть-чуть изменится)


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

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