У меня есть класс AS3, который анализирует xml и создает кнопки для элемента foreach в XML. Однако я хочу получить доступ к общему количеству элементов позже. Как я могу это сделать?Action Script 3 возвращает значение из класса
Я использую его вот так.
var menu:MenuClass = new MenuClass();
trace(menu.aItems());
Прямо сейчас она перенастройки NAN
однако если я проследить его после строки Items = xml.item.length();
выводит правильный номер.
package com.lib.menu
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class MenuClass extends MovieClip {
private var urlLoader:URLLoader;
private var urlRequest:URLRequest;
private const XML_PATH:String = "resources/menu.xml";
private var xml:XML;
protected var Items:Number;
public function MenuClass() {
urlLoader = new URLLoader();
urlLoader.load(new URLRequest(XML_PATH));
urlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
}
private function xmlLoaded(e:Event):void
{
xml = new XML(e.target.data);
Items = xml.item.length();
for (var i:int = 0; i < Items; i++) {
var btn:Button = new Button(xml.item[i][email protected],xml.item[i][email protected]);
btn.y = Math.floor(i * (btn.height+2)) ;
addChild(btn);
}
}
public function aItems():Number {
return Items;
}
}
}
Это происходит потому, что при обращении к 'Aitems()', ваш XML не был загружен еще. Поэтому вам нужно изменить способ доступа к количеству элементов. – putvande
Именно то, что написал вам письмо. Плюс ... не используйте капитал I в Items, он выглядит как класс ... – Fygo