PDA

Просмотр полной версии : Как предотвратить повторное проигрывание флеш ролика


DemonD
02.02.2008, 20:51
ставлю на прелоадер следующий скрипт

onClipEvent (load) {
myVar = SharedObject.getLocal("cookie_test1");
msg = myVar.data.txt; // считываю инфо с кукисов
if (msg == "loaded"){
gotoAndStop("s1");

// пишу что делать, если мувик уже загружался прежде
}else{
myVar.data.txt = "loaded";// записываю в кукисы с названием "cookie_test1" значение "loaded"
myVar.flush();
}

total = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
loaded = _root.getBytesLoaded();
percent = int(loaded/total*100);
text = percent+"%";
gotoAndStop(percent);
if (loaded == total) {
_root.gotoAndPlay(2);
}
}
Это не помогает флеш проигрывает всё каждый раз начиная со второго кадра. Вообще в идеале необходимо сделать так, что если пользователь один раз остановил анимацию _root.anim = 0 , то при перезагрузки этой или другой страницы анимация не проигрывалась, а если пользовател нажмёт "проиграть анимацию" _root.anim = 1 то соответственно флешка проигрывается при перезагрузке.
Заранее спасибо.

MrPoma
02.02.2008, 21:39
писать код в клипах - запрещено!

DemonD
02.02.2008, 22:31
Спасибо, ничего так и не понял.

MrPoma
02.02.2008, 23:04
var myVar:SharedObject = SharedObject.getLocal('cookie');
var msg:String = myVar.data.txt; // считываю инфо с кукисов
if (msg != 'loaded'){
myVar.data.txt = 'loaded';
myVar.flush();
trace('в первый раз вы у нас')
}else{
trace('много раз были у нас')
}

var total:Number = _root.getBytesTotal();

onEnterFrame = function(){
var loaded:Number = _root.getBytesLoaded();
var percent:Number = Math.round(loaded/total*100);
trace(percent+'%;);

if(loaded >= total) {
trace('загружено')
}
}

iNils
02.02.2008, 23:31
DemonD, для оформления своего кода надо использовать теги .

DemonD
02.02.2008, 23:47
Как я понял это и есть прелоадер, пишу следующее в первом кадре ролика:

stop();
var msg:String = myVar.data.txt; // считываю инфо с кукисов
if (msg != 'loaded'){
myVar.data.txt = 'loaded';
myVar.flush();
gotoAndPlay(2);//в первый раз вы у нас

}else{

gotoAndStop("s1");//много раз были у нас

}

var total:Number = _root.getBytesTotal();

onEnterFrame = function(){
var loaded:Number = _root.getBytesLoaded();
var percent:Number = Math.round(loaded/total*100);
trace(percent+'%');

if(loaded >= total) {
trace('загружено')
}
}


Но в этом случае даже при загрузке ролика первый раз он отсылает на "s1"

MrPoma
03.02.2008, 00:17
потому что много раз тестили. естественно, что инфа уже там.
myVar.clear()

DemonD
03.02.2008, 01:15
Фух, к сожалению опять не получается.
Тут исходник примерно того что хотелось бы получить:
http://www.rapidshare.ru/564255

D12
03.02.2008, 02:58
Сделайте кнопку в 1 кадре которая будет активна когда всё загрузится и которя будет перепровлять в 2 кадр
так не годится ?

DemonD
03.02.2008, 03:17
Суть в том, что хотябы один раз анимация должна проиграть без участия пользователя. Т.е. по сути нужно забросить кудато информацию и потом от туда считыватью Может создать в кеше браузера какойто ХМЛ документ, если конечно такое возможно.

На форуме, в исходниках, есть такой пример как:primer SharedObject, но он сделан под 1-й Action, скорее всего нужно использовать что-то в этом плане.

D12
03.02.2008, 03:33
SharedObject в помощь
а вообще верно мыслишь
во втором кадре отправляешь значение переменной пользователю допустим 1, а в первом кадре будет на это проверка стоять, если переменная равна 1 то активна кнопка стоп, и в момент перезагрузки анимация недолжна проигрыватся, приблизительно такая модель :) хотя меня можно и помидорами забросать :)