PDA

Просмотр полной версии : moveMc.as tween problem


ader
26.10.2006, 04:01
Делаю значит фотогалерею и собсно хочу чтоб у каждой фотки был фон который сайзился под фотку.

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

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


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