Форум 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);
        }


CoolDV 24.04.2007 15:57

Фуф разобрался....
Вот так работает. Единственный минус, что данные заново каждый раз подгружаются, как это лечить ума не приложу :(
Код:

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



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

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