PDA

Просмотр полной версии : tween и unloadClip


sector_222
14.02.2009, 23:01
здравствуйте,

varTarget = _root.Windoww.mediaContent;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeOut, varTarget._alpha, 0, 0.25, true);

varTarget.varTween.onMotionFinished = function() {
_root.my_mcl.unloadClip(_root.Windoww.mediaContent);
};





подскажите пожалуйста - почему данный код срабатывает в _root, а когда его же вношу в функцию on(release) нужной мне кнопки - код не срабатывает - только если просто

_root.my_mcl.unloadClip(_root.Windoww.mediaContent);

Fatality
15.02.2009, 02:39
Все работает, как в кнопке, так и без нее
on (release) {
import mx.transitions.Tween;
import mx.transition.easing.*;
varTarget = _root.Windoww.mediaContent;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeOut, varTarget._alpha, 0, 0.25, true);

varTarget.varTween.onMotionFinished = function()
{
varTarget.unloadClip();
};
}
Но это устаревший вариант использования событий, мы же не во Flash 5 работаем !
Куда лучше использовать событие кнопки onRelease в том же _root.
И еще, это что ? _root.my_mcl.unloadClip (_root.Windoww.mediaContent);
тут или varTarget.unloadClip(); использование unloadMovie как метода (удалит _root.Windoww.mediaContent) или unloadMovie(varTarget);использование unloadMovie как функции (результат тот же).
При чем тут _root.my_mcl, вообще непонятно.

sector_222
16.02.2009, 15:54
При чем тут _root.my_mcl, вообще непонятно.

а это я затупил - теперь ясно почему не шло - надо было просто объявить классы

import mx.transitions.Tween;
import mx.transition.easing.*;

спасибо =)!!!:drinks:

у меня другой вопрос связанный с прелоадером:

в руте есть код:


// загрузчик изображения
//Создаём объект Movie Clip Loader
var my_mcl:MovieClipLoader = new MovieClipLoader();
//Создаём объект класса Object, который будет выступать у нас в роли "слушаетля"
//событий, которые генерирует Movie Clip Loader
var my_lst:Object = new Object();
//Делаем обект my_lst "слушателем" объекта my_mcl
my_mcl.addListener(my_lst);
//Создаём событие, которое будет возникать при СТАРТЕ ЗАГРУЗКИ
//
//Параметр target_mc, который передаётсяв теле функции - это клип-контейнер, в
//в который загружается картинка или флешка с помощью Movie Clip Loader.
my_lst.onLoadStart = function(target_mc:MovieClip) {

//будет отображаться ход загрузки внешнего файла
varTarget = _root.Windoww.preload_mc;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeOut, varTarget._alpha, 100, 0.25, true);
};
//target_mc - это клип-контейнер, в который подгружается внешний файл
//loaded - это количество уже загруженных данных (в байтах)
//total - общий размер загружаемого файла в байтах
my_lst.onLoadProgress = function(target_mc:MovieClip, loaded:Number, total:Number) {
/*trace("Процент загрузки в "+target_mc+" составляет "+varPercent+"%");*/
//Вычисляем процентное отношение загруженных данных к общему размеру файла
varPercent = loaded/total*100;
//Показываем процент загрузки в текстовых полях
_root.Windoww.preload_mc.preload_txt.text = _root.Windoww.preload_mc.duplicate_txt.text=Math.round(varPercent)+"%";
};
//Создаём событие, которое будет срабатывать по завершению загрузки
my_lst.onLoadComplete = function(target_mc:MovieClip){
//Когда закончена загрузка скрываем клип preload_mc, в котором показывался
//процент загрузки.
/*varTarget = _root.Windoww.preload_mc;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeOut, varTarget._alpha, 0, 0.5, true);*/
};
//событие onLoadInit
my_lst.onLoadInit = function(target_mc:MovieClip) {

varTarget = target_mc;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeIn, 0, 100, 1, true);
};


в кнопке есть такой код:

varTarget = _root.Windoww.mediaContent;
varTarget.varTween = new Tween(varTarget, "_alpha", Regular.easeOut, varTarget._alpha, 0, 0.25, true);
_root.my_mcl.loadClip(_root.ImgURL, _root.Windoww.mediaContent);



в итоге естественно прелоадер работает только когда я нажимаю кнопку первый раз - до меня не доходит как вызывать прелоадер ????? при каждом нажатии на кнопку :wacko: Может просто убрать весь код из рута в кнопку?

nOobCrafter
16.02.2009, 16:20
Обьяви все в цикле, если хочешь для разных ссылок, иначе картинка уже считай загружена.

sector_222
16.02.2009, 16:30
цикл не пойдёт я думаю - поскольку я загружаю не несколько одновременно - а только одну - и при каждом обращении к кнопке переменная _root.ImgURL - всегда разная

dimarik
16.02.2009, 16:35
как-то так можно
import mx.transitions.Tween;
import mx.transition.easing.Regular;

var app: MovieClip = this;
var Windoww: MovieClip;

function onLoadInit(target:MovieClip):Void {
target.mcl.removeListener(this);
delete target.mcl;
this.tweenMe(target);
}

function tweenMe(target:MovieClip):Void {
target.varTween = new Tween(target, "_alpha", Regular.easeIn, 0, 100, 1, true);
}

// Ваш button - instance name
this.button.onRelease = function():Void {
if (!app.Windoww.mediaContent) {
var mcl:MovieClipLoader = new MovieClipLoader();
var target:MovieClip = app.Windoww.createEmptyMovieClip( 'mediaContent', app.Windoww.getNextHighestDepth() );
target.mcl = mcl;
mcl.addListener(app);
mcl.loadClip(_root.ImgURL, target);
}
else app.tweenMe(app.Windoww.mediaContent);
}