PDA

Просмотр полной версии : Доступ к полям загруженного файла


miramax
16.09.2006, 22:50
Пробле до глупости проста...
Создаю первый файл , например mc.fla
В котором есть функция и любые поля, ссылки, переменные

ab = 'переменная вызвана';
callf = function(){
trace('безимяная функция по ссылке')
return(ab)
}
function tr(){
trace('функция вызвана')
return(ab)
}

А теперь создаю другой файл, которой должен загрузить первый и что-то с ним сделать.

l= new Loader();
l.load(new URLRequest("mc.swf"));
l.contentLoaderInfo.addEventListener('complete', onComplete)
function onComplete(event:Event){
trace(l.content.ab) //пытаемся вывести переменную
trace(l.content.tr()) //то же самое через функцию, работает
trace(l.content.callf()); //а теперь вызываем функцию через ссылку
}

Почему я не могу получить доступ к полям загруженного объекта? Почему работают только непосредственно методы? Мне кажется странным то что я могу вызвать метод и не могу обратиться к переменной. В чём моя ошибка?

MerlinTwi
16.09.2006, 23:11
Если писать все по правилам, то проблем не будет возникать :)
Вот так работает Mc.as:
package {
import flash.display.Sprite;
public class Mc extends Sprite {
public var ab:String = 'переменная вызвана';
public var callf:Function = function():String{
trace('безимяная функция по ссылке')
return(ab)
}
public function tr():String{
trace('функция вызвана')
return(ab)
}
}
}

miramax
16.09.2006, 23:15
Если писать все по правилам, то проблем не будет возникать :)
Вот так работает Mc.as:
Ого!
Нада выбивать из себя дурную привычку использовать панель Actions :)

Nirth
16.09.2006, 23:26
вообще народ учтите, что флэш 9 альфа, транслирует весь ваш код в кадрах, в классы...а так как это альфа, никто не гарантирует, что классы эти будут логически правильными.

FlexBuilder
17.09.2006, 22:23
Да уж, пока приходится терпеть...