PDA

Просмотр полной версии : Перенос проекта с AS2 на AS3. Нужна помощь.


Маруська
07.06.2012, 10:37
Ребята, очень нужна помощь. Я уже 2 недели бьюсь над одним проектом. Оболочку нарисовала быстро, но весь скрипт на AS 2 организован, потому что AS 3 ещё ни разу не пробовала (да и необходимости не было, но теперь понимаю, что нужно учиться). Стала подгружать в него готовые swf-ки, написанные под AS 3, и вот с ними-то как раз начались проблемы: отображаются неправильно, не реагируют на кнопки.

Хотела было своими силами переписать свой скрипт с AS 2 на AS 3, но знаний и опыта нет совсем, и сколько ни читаю всякой инфы в инете - применения этому материалу найти не могу. Делаю что-то - сплошные ошибки выходят.

Поэтому очень прошу помощи. Скрипт не такой уж и большой. Может найдётся сердобольный гражданин и перепишет мне его? а ещё лучше, если подробно расскажет, что к чему и как делать лучше.

простенький прелоадер на 2-х фреймах:
Фрейм 1

t = this.getBytesTotal();
l = this.getBytesLoaded();
p = l/t*100;
_root.PreloaderBar.gotoAndStop (Math.round(p/10)+1);
//_root.PreLoaderBar.PercentL = String(int(p)) add "%";
fscommand ("fullscreen", "true");
fscommand ("showmenu", "false");
Фрейм 2
t = this.getBytesTotal();
l = this.getBytesLoaded();
if (t<>l) {
gotoAndPlay (1);
}

И третий фрейм:
/
loadMovie('gktth.swf', ap);

if (i<=0){
glav_mc.bar1.gotoAndPlay('s3');
}
cloze_mc._visible = false;
close_._visible = false;


function glob_func() {
clearTimeout();
dop_mc.gotoAndPlay(21);
}


glav_mc.btn1.onRollOver = function(){
glav_mc.bar1.gotoAndPlay('s2');}
glav_mc.btn2.onRollOver = function(){
glav_mc.bar2.gotoAndPlay('s2');
glav_mc.bar1.gotoAndStop('s2');}
glav_mc.btn3.onRollOver = function(){
glav_mc.bar3.gotoAndPlay('s2');
glav_mc.bar1.gotoAndStop('s2');}
glav_mc.btn4.onRollOver = function(){
glav_mc.bar4.gotoAndPlay('s2');
clearTimeout();
dop_mc.gotoAndPlay(2);
glav_mc.bar1.gotoAndStop('s2');}
glav_mc.btn5.onRollOver = function(){
glav_mc.bar5.gotoAndPlay('s2');
glav_mc.bar1.gotoAndStop('s2');}
glav_mc.btn6.onRollOver = function(){
glav_mc.bar6.gotoAndPlay('s2');
glav_mc.bar1.gotoAndStop('s2');}
glav_mc.btn7.onRollOver = function(){
glav_mc.bar7.gotoAndPlay('s2');
glav_mc.bar1.gotoAndStop('s2');}




glav_mc.btn1.onRollOut = function(){
glav_mc.bar1.gotoAndPlay('s1');}
glav_mc.btn2.onRollOut = function(){
glav_mc.bar2.gotoAndPlay('s1');}
glav_mc.btn3.onRollOut = function(){
glav_mc.bar3.gotoAndPlay('s1');}
glav_mc.btn4.onRollOut = function(){
glav_mc.bar4.gotoAndPlay('s1');
setTimeout(glob_func, 5000);}
glav_mc.btn5.onRollOut = function(){
glav_mc.bar5.gotoAndPlay('s1');}
glav_mc.btn6.onRollOut = function(){
glav_mc.bar6.gotoAndPlay('s1');}
glav_mc.btn7.onRollOut = function(){
glav_mc.bar7.gotoAndPlay('s1');}



glav_mc.btn1.onPress = function()
{glav_mc.bar1.gotoAndStop('s2');
glav_mc.btn1.enabled = true;
stopAllSounds();
unloadMovie(r);
unloadMovie(vp);
}

glav_mc.btn2.onPress = function()
{glav_mc.bar2.gotoAndStop('s2');
glav_mc.btn2.enabled = true;
loadMovie('about.swf', r);//about.swf
cloze_mc._visible = true;
close_._visible = true;}

glav_mc.btn3.onPress = function()
{glav_mc.bar3.gotoAndStop('s2');
glav_mc.btn3.enabled = true;
loadMovie('single_youtube.swf', r);//
}

glav_mc.btn5.onPress = function()
{glav_mc.bar5.gotoAndStop('s2');
glav_mc.btn5.enabled = true;
loadMovie('tehr.swf', r);
cloze_mc._visible = true;
close_._visible = true;}

glav_mc.btn7.onPress = function()
{glav_mc.bar7.gotoAndStop('s2');
glav_mc.btn7.enabled = true;
loadMovie('gktth.swf', ap);}

close_.onRollOver = function(){
cloze_mc.gotoAndPlay('s1');}
close_.onRollOut = function(){
cloze_mc.gotoAndPlay('s2');}
close_.onPress = function(){
unloadMovie (r);
cloze_mc._visible = false;
close_._visible = false;}

Hauts
07.06.2012, 10:43
В первом кадре код для прелодера:

import flash.events.*;
stop();
addEventListener(Event.ENTER_FRAME, checkProgress);

function checkProgress(e:Event):void {
var lb:Number = stage.loaderInfo.bytesLoaded;
var tb:Number = stage.loaderInfo.bytesTotal;
var progressValue:Number = lb / tb * 100;// Если нужно выводить проценты загрузки
trace(progressValue)
if (lb == tb) {
removeEventListener(Event.ENTER_FRAME, checkProgress);
gotoAndStop(2);
}
}

Смысл примерно такой же, как и в вашем варианте, только вы не стопите первый кадр, а перескакиваете между первым и вторым, чтобы получить обновление счетчика. А в моем варианте мы просто стопим первый кадр, подписываемся на ENTER_FRAME, благодаря чему так же получаем обновление счетчика.

В версии с as2 это выглядело бы так (если пригодится):

stop();
this.onEnterFrame = function(){
var tb = this.getBytesTotal();
var lb = this.getBytesLoaded();
if(lb == tb){
delete this.onEnterFrame;
gotoAndStop(2)
}
}


По остальной части кода посмотрю позже, на работу пора собираться :)

Маруська
07.06.2012, 10:56
Спасибо большое!

in4core
07.06.2012, 16:41
t<>l что это? Это все равно что == ? Первый раз вижу

Hauts
07.06.2012, 16:44
in4core, это еще с Flash`а четвертой (не путать с CS4) версии пошло, значит точно то же самое, что и "!="

udaaff
07.06.2012, 17:17
t<>l что это? Это все равно что == ? Первый раз вижу
http://help.adobe.com/en_US/AS2LCR/Flash_10.0/00001774.html#126629

in4core
07.06.2012, 18:12
жупь какая то)

Маруська
07.06.2012, 23:58
эхъ.. толку ноль. надо хотя бы плей-лист доделать.. помогите, пожалуйста хотя бы с ним http://www.flasher.ru/forum/showthread.php?t=180473

FlashRus
08.06.2012, 09:00
жупь какая то)

в паскале также... Мне так даже больше нравится.