Просмотр полной версии : Функция onPress, не применяется к созданному мувику
Добрый день, создаю мувик импорт внешних изображений в список со скроллом, данные об изображениях беру из xml
в общем виде после загрузки данных из xml в кадре код выглядит так
for (var i=0;i<xmlload.firstChild.childNodes.length;i++)
{
j++;
img_small=xmlload.firstChild.childNodes[i].attributes.img_small
img_big=xmlload.firstChild.childNodes[i].attributes.img_big
pole.createEmptyMovieClip("img"+i,i);
pole["img"+i].onPress= function(){
trace ("onPress called");
}
loadMovie(img_small, pole["img"+i]);
if (j>3)
{
yy+=100;
xx=0;
j=0;
}
setProperty(pole["img"+i], _x, xx);
setProperty(pole["img"+i], _y, yy);
xx=xx+100;
}
где pole - мувик под маской, для скролла. то есть я создаю в мувике pole, таблицу изображений по три в строке.
Так вот,
pole["img"+i].onPress= function(){
trace ("onPress called");
}
не отрабатывает, то есть трэйс не появляется....
помогите пожалуйста, в чём ошибка....
CoolDV, оформите свой код в посте.
CoolDV, оформите свой код в посте.
так??
Да, все нормально. По сабжу: нужно дождаться загрузки, а потом уже назначать функции. MovieClipLoader в помощь.
pole.createEmptyMovieClip(....)
разве не создаёт мувик???
я же наполняю его изображением после создания, и после применения к нему функции onPress.
PS создаю это всё в Flash MX v6.0. MovieClipLoader в функциях не нашёл
Создает клип. Только после loadMovie все, что было присвоено и создано клипу будет удалено. Нужно дождаться загрузки, а потом уже присваивать методы. Отслеживайте загрузку по количеству загруженных байт.
При создании руководствовался этой статьёй
http://flasher.ru/articles/view/{tutors.pg=122}
цитата:
_root.createEmptyMovieClip("down",10);
triangle(_root.down);
_root.down._x = 630;
_root.down._y = 360;
_root.down.onRelease = function(){
_root.info.scroll++;
}
ок спасибо
На крайний случай можно и так:
pole.createEmptyMovieClip("img"+i,i);
pole["img"+i].onPress= function(){
trace ("onPress called");
}
pole["img"+i].createEmptyMovieClip("img",1).loadMovie(img_small);
То есть код на клип, внутри клипа еще клип и уже втуда грузить. Но MovieClipLoader лучше.
MovieClipLoader появился в 7-ом плеере, поэтому в mx его нет.
хм странно, xml у меня такой
<news><img1 img_small="files/img1_sm.jpg" img_big="files/img1_big.jpg" text="img1" /><img2 img_small="files/img2_sm.jpg" img_big="files/img2_big.jpg" text="img2" /><img3 img_small="files/img3_sm.jpg" img_big="files/img3_big.jpg" text="img3" /><img4 img_small="files/img4_sm.jpg" img_big="files/img4_big.jpg" text="img4" /><img5 img_small="files/img5_sm.jpg" img_big="files/img5_big.jpg" text="img5" /><img6 img_small="files/img6_sm.jpg" img_big="files/img6_big.jpg" text="img6" /><img7 img_small="files/img1_sm.jpg" img_big="files/img3_big.jpg" text="img7" /><img8 img_small="files/img4_sm.jpg" img_big="files/img4_big.jpg" text="img8" /></news>
то есть 8 изображений, но отображается только 7
сделал так
for (var i=0;i<xmlload.firstChild.childNodes.length;i++)
{
j++;
img_small=xmlload.firstChild.childNodes[i].attributes.img_small;
img_big=xmlload.firstChild.childNodes[i].attributes.img_big;
pole.createEmptyMovieClip("img"+i,i).onPress= function()
{
trace (i);
};
pole["img"+i].createEmptyMovieClip("img",1).loadMovie(img_small);
if (j>3)
{
yy+=100;
xx=0;
j=0;
}
setProperty(pole["img"+i], _x, xx);
setProperty(pole["img"+i], _y, yy);
xx=xx+100;
}
на всех созданных изображениях при клике на них трэйсится цифра 8, хотя хотелось бы чтобы цифра соответствовала номеру изображения
ЗЫ это всё будет располагаться локально, в презентации, с возможностью синхронизации с веб сайтом
ЗЗЫ в конечном итоге хотелось бы получить что то в виде
pole.createEmptyMovieClip("img"+i,i).onPress= function()
{
createEmptyMovieClip("big"+i,i);
loadMovie(img_big, "big"+i);
setProperty("big"+i, _x, 0);
setProperty("big"+i, _y, 0);
}
Фуф разобрался....
Вот так работает. Единственный минус, что данные заново каждый раз подгружаются, как это лечить ума не приложу :(
function hidebig(count) {
setProperty(big_im, _visible, false);
for (i=0; i<count; i++) {
setProperty(big_im["big"+i], _visible, false);
}
}
countimg =xmlload.firstChild.childNodes.length;
for (var i = 0; i<countimg; i++) {
img_small = xmlload.firstChild.childNodes[i].attributes.img_small;
img_big = xmlload.firstChild.childNodes[i].attributes.img_big;
img_text = xmlload.firstChild.childNodes[i].attributes.text;
big_im.createEmptyMovieClip("big"+i, i).loadMovie(img_big);
setProperty(big_im, _visible, false);
pole.createEmptyMovieClip("img"+i, i);
pole["img"+i].big = img_big;
pole["img"+i].txt = img_text;
pole["img"+i].count = i;
pole["img"+i].onPress = function() {
hidebig(i);
setProperty(big_im, _visible, true);
setProperty(big_im["big"+this.count], _visible, true);
textbox = "<p align='center'>"+this.txt+"</p>";
};
pole["img"+i].createEmptyMovieClip("img", 1).loadMovie(img_small);
if (j>=3) {
yy += 80;
xx = 0;
j = 0;
}
setProperty(pole["img"+i], _x, xx);
setProperty(pole["img"+i], _y, yy);
j++;
xx += 95;
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.