PDA

Просмотр полной версии : attachMovie не работает внутри onLoad


MelDiz
02.07.2006, 00:18
Ситуация: есть внешний XML и естественно функция onLoad, внутри данной функции не срабатывает метод attachMovie, если attachMovie вынести за пределы функции onLoad - всё работает. Та часть, которая относится к функции onLoad ошибок кажется не имеет поскольку работает корректно.

Код:

var news:XML = new XML();
System.useCodepage = true;
news.ignoreWhite = true;
news.load("topic3.xml");
news.onLoad = function(success) {

this.attachMovie("poi", "usluga12" , 1);

}


Спасибо за ответ

Nirth
02.07.2006, 00:27
Ошибка в области видимости в методе onLoad, this ссылается не на текущий мувиклип, а на экземпляр класса XML - news.
можно попробывать так ( работает в 7, 8 и 9ом флэше)

import mx.utils.Delegate
System.useCodepage = true;
news.ignoreWhite = true;
news.load("topic3.xml");
news.onLoad = Delegate.create(this,loaded);
function loaded(success:Boolean):Void {

this.attachMovie("poi", "usluga12" , 1);

}

MelDiz
02.07.2006, 02:41
Попробовал то, что вы, Nirth, написали - не работает(Flash MX Prof. 2004)
Честно говоря, не понял смысл строчек, буду благодарен если Вы объясните смысл след. сторочек :
1) import mx.utils.Delegate
2) news.onLoad = Delegate.create(this,loaded);

или выдадите готовое работающее решение

Спасибо

iNils
02.07.2006, 02:54
var news:XML = new XML ();
System.useCodepage = true;
news.ignoreWhite = true;
news.load ("topic3.xml");
news.mc = this;
news.onLoad = function (success) {
mc.attachMovie ("poi", "usluga12", 1);
};
Вобще советуется не использовать System.useCodepage = true, а работать с данными в кодировке utf-8

MelDiz
02.07.2006, 03:21
а что значит свойство mc("news.mc")? просто аутпут выдаёт ошибку "There is no property with the name 'mc'"

iNils
02.07.2006, 03:25
а что значит свойство mc("news.mc")? просто аутпут выдаёт ошибку "There is no property with the name 'mc'"
Вот они минусы типизации :) Так решалась проблема во времена 6-го плеера.
news = new XML ();
System.useCodepage = true;
news.ignoreWhite = true;
news.load ("topic3.xml");
news.mc = this;
news.onLoad = function (success) {
mc.attachMovie ("poi", "usluga12", 1);
};

Nirth
02.07.2006, 03:29
можно тогда так

news = new XML ();
System.useCodepage = true;
news.ignoreWhite = true;
news.load ("topic3.xml");
var selfRef:MovieClip = this;
news.onLoad = function (success) {
selfRef.attachMovie ("poi", "usluga12", 1);
};



Попробовал то, что вы, Nirth, написали - не работает(Flash MX Prof. 2004)
Честно говоря, не понял смысл строчек, буду благодарен если Вы объясните смысл след. сторочек :
1) import mx.utils.Delegate
2) news.onLoad = Delegate.create(this,loaded);

забыл упомянуть чтоверсия должна быть 7.2 и нужно экспортировать мувик либо под Flash Player 6 ActionScript 2.0 либо под 7 с ActionScript 2.0.

в первой строчке мы импортируем класс mx.utils.Delegate
во второй создаем делегат ( про делегат можно в википедии или гугле почитать)

MelDiz
02.07.2006, 13:04
Большое спасибо, последнее предложение Nirth работает, вот только проблемка тогда возникает с компонентом Scrollpane: SP не хочет нормально "прокручивать" ВЕСЬ тот мувик В КОТОРЫЙ мы аттачим мувик "poi"

MelDiz
02.07.2006, 13:16
т.е. в SP не появляются полосы прокрутки, хотя должны,т.к. размер мувика который аттачится намного больше чем размер SP