Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Функция onPress, не применяется к созданному мувику (http://www.flasher.ru/forum/showthread.php?t=94871)

CoolDV 21.04.2007 21:13

Функция 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");

        }

не отрабатывает, то есть трэйс не появляется....
помогите пожалуйста, в чём ошибка....

etc 21.04.2007 21:15

CoolDV, оформите свой код в посте.

CoolDV 21.04.2007 21:30

Цитата:

Сообщение от __etc
CoolDV, оформите свой код в посте.

так??

etc 21.04.2007 21:33

Да, все нормально. По сабжу: нужно дождаться загрузки, а потом уже назначать функции. MovieClipLoader в помощь.

CoolDV 21.04.2007 21:42

pole.createEmptyMovieClip(....)

разве не создаёт мувик???
я же наполняю его изображением после создания, и после применения к нему функции onPress.

PS создаю это всё в Flash MX v6.0. MovieClipLoader в функциях не нашёл

etc 21.04.2007 21:49

Создает клип. Только после loadMovie все, что было присвоено и создано клипу будет удалено. Нужно дождаться загрузки, а потом уже присваивать методы. Отслеживайте загрузку по количеству загруженных байт.

CoolDV 21.04.2007 21:49

При создании руководствовался этой статьёй

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++;
}

ок спасибо

Kikasso 21.04.2007 22:12

На крайний случай можно и так:
Код:

pole.createEmptyMovieClip("img"+i,i);
pole["img"+i].onPress= function(){
trace ("onPress called");
}
pole["img"+i].createEmptyMovieClip("img",1).loadMovie(img_small);

То есть код на клип, внутри клипа еще клип и уже втуда грузить. Но MovieClipLoader лучше.

iNils 21.04.2007 23:50

MovieClipLoader появился в 7-ом плеере, поэтому в mx его нет.

CoolDV 22.04.2007 13:58

хм странно, 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);
        }



Часовой пояс GMT +4, время: 22:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.