Форум 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)
-   -   moveMc.as tween problem (http://www.flasher.ru/forum/showthread.php?t=86967)

ader 26.10.2006 04:01

moveMc.as tween problem
 
Делаю значит фотогалерею и собсно хочу чтоб у каждой фотки был фон который сайзился под фотку.

Т.е. фотка не просто появляется а как бы выплывает из другой.

Если ставить жосткие координаты без твина - естественно всё отлично работает. Но выплывания в этом случаи нет. Нет твина.

Код:

windowmc._x = cx - 5;
windowmc._y = cy - 5;
windowmc._width = mc._width + 10;
windowmc._height = mc._height + 10;

но если поставить твин - windowmc зависает на своей текущей координате и твин не работает.

Код:

tween = new mx.transitions.Tween(windowmc, "_width", mx.transitions.easing.Strong.easeInOut, windowmc._width, picturemc._width, 1, true);
tween = new mx.transitions.Tween(windowmc, "_height", mx.transitions.easing.Strong.easeInOut, windowmc._height, picturemc._height, 1, true);
tween = new mx.transitions.Tween(windowmc, "_x", mx.transitions.easing.Strong.easeInOut, windowmc._x, picturemc._x, 1, true);
tween = new mx.transitions.Tween(windowmc, "_y", mx.transitions.easing.Strong.easeInOut, windowmc._y, picturemc._y, 1, true);

Насколько я понял - оно постоянно запускает твин как будто он в цыкле.
Как этого избежать?

Есть ещё нюанс: - пока мы не загрузим фотку, ни о каких координатах речи идти не может.

Я уже все варианты перепробывал. И в отдельную функтию сайз ставил (работает так же само - запускает постоянно функцию) и вообще в отдельный мувиклип ставил...

Вы умные - помогите а? Пол дня уже долбаюсь.



Твин использую moveMc.as - сам твин рабочий 100%.
раньше юзал lmc_tween.as - работало - но страшно этот твин глючит. Разлюбил я его ))



даю функцию грузящую фотку:

Код:

_global.loadImage = function(mc, prevNameImage, currentNameImage, nextNameImage) {
        mc.createEmptyMovieClip("currentImage", 1);
        mc.currentImage.loadMovie(currentNameImage, 1);
        mc.onEnterFrame = function() {
                var BytesLoaded:Number = mc.currentImage.getBytesLoaded();
                var BytesTotal:Number = mc.currentImage.getBytesTotal();
                if (BytesTotal != undefined) {
                        var cx = int(mc._width/2-mc._width+Stage.width/2);
                        var cy = int(mc._height/2-mc._height+Stage.height/2);
                        mc._x = cx;
                        mc._y = cy;
                        loadImgStatus = true;
                       
                        //windowmc._x = cx - 5;
                        //windowmc._y = cy - 5;
                        //windowmc._width = mc._width + 10;
                        //windowmc._height = mc._height + 10;
                       
                        //tween = new mx.transitions.Tween(windowmc, "_width", mx.transitions.easing.Strong.easeInOut, windowmc._width, picturemc._width, 1, true);
                        //tween = new mx.transitions.Tween(windowmc, "_height", mx.transitions.easing.Strong.easeInOut, windowmc._height, picturemc._height, 1, true);
                        //tween = new mx.transitions.Tween(windowmc, "_x", mx.transitions.easing.Strong.easeInOut, windowmc._x, picturemc._x, 1, true);
                        //tween = new mx.transitions.Tween(windowmc, "_y", mx.transitions.easing.Strong.easeInOut, windowmc._y, picturemc._y, 1, true);
                } else {
                        loadImgStatus = false;
                }
        };
};


iNils 26.10.2006 06:14

Слов нет как все плохо... Вы манипулируете с картинкой в процессе ее загрузки, что не правильно, она все равно пока не загрузится не будет отображаться, хотя BytesTotal ее уже известен и поэтому код внутри onEnterFrame бессмысленно работает. Эти манипуляции идут вечно, так как вы не убиваете onEnterFrame. В каждом кадре пытается переопределить Tween, что само по себе его использование бесполезно. Координаты каждой картинки будут одинаковы, так как вы распологаете их относительно размеров Stage.
Кроме того даете код и путь все мучаются и думают, что такое в нем windowmc.

ader 26.10.2006 20:45

ага. Про загрузку не подумал. буду проверять на BytesLoaded == BytesTotal
Получается что нужно просто убить onEnterFrame ?
delete onEnterFrame();

так ?

что касается координат - то они кадждый раз разные тк. размеры картинок разные.

ader 26.10.2006 20:52

ыыы... заработало :)
спасибо.

не работало пока не поставил проверку на ширину

BytesTotal == BytesLoaded and BytesTotal != undefined and mc._width != 0


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

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