Просмотр полной версии : про переменные в классе
this.wampa
18.04.2006, 04:14
есть класс:
class screen {
public var gogo:Number;
public var xmlLoader:XML;
public function screen() {
xmlLoader = new XML();
xmlLoader.ignoreWhite = true;
xmlLoader.load("screena.xml");
//gogo = 150;
xmlLoader.onLoad = function(success){
if (success) {
gogo = this.firstChild.childNodes.length;
_root.SCR.test();
}
}
}
public function test() {
trace(gogo);
}
}
вызываю:
var SCR:screen = new screen();
а выдает undefined
почему???
xmlLoader.onLoad = function(success){
if (success) {
gogo = this.firstChild.childNodes.length;
_root.SCR.test();
}
}
Потому что в данном случае флешка "думает", что gogo относиться к xmlLoader'у, а не к твоему классу.
Лечение: использование делегатов
Пример:
В самом начале файлика с классом (до объявления класса):
import mx.utils.Delegate
Дальше в классе объявляешь метод
private afterLoad(success:Boolean):Void
{
if (success)
{
this.gogo = this.firstChild.childNodes.length;
this.test();
}
}
и цепляешь делегата на onLoad
xmlLoader.onLoad = Delegate.create(this, afterLoad);
И еще - проверь правильность XML-файла
this.wampa
18.04.2006, 05:28
Зашибись!
Немного подправила и фсе заработало! Спасибо!
private function afterLoad(success:Boolean):Void {
if (success) {
this.gogo = xmlLoader.firstChild.childNodes.length;
this.test();
}
}
breez, ты человек!
А я вот таким идиотизмом раньше страдал (как ни странно все работает):
class ... {
public function setContent(node:XMLNode) {
if(node.attributes.src!=undefined) {
var Html:LoadVars = new LoadVars();
var Body:TextField = this["txtBody"];
Html.onData = function(src:String) {
if(src!=undefined)
Body.htmlText = src.split("\r\n").join("");
}
Html.load(node.attributes.src);
}
}
}
:p
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.