Просмотр полной версии : Как запустить ролик на начало
Есть флешка иллюстрирующая алгоритм сортировки
у меня на баттоне Control весит весь код этой флешки
Всего на сцене 1 кадр
Что мне нужно повесить на кпопку - Кнопка "Сначала"
чтобы анимация запустилась с начала (т.е. так же как и при пуске флешки)
gotoAndPlay(); - не помогает
Все что у тебя записано в onClipEvent (load){} вынеси в отдельную ф-цию которая будет по твоему желанию восстанавливать все переменные в исходное значение (предварительно удалив все созданное в процессе работы). Проблема в том, что онЛоад вызывается всего 1 раз, когда клип загружается (наверное именно поэтому она так и называется %).
К сожалению все написано очень запутано, много лишнего, очень тяжело разобраться не смотря на то, что задача очень простая...
Если нет времени переделывать, а флешку планируешь показывать в ХТМЛ странице, то проще обратится из флешки к жаваскрипту и попросить перезагрузится, чем возится и приводить код в нормальное состояние...
Ну или аналогично можно всю флешку грузить в другую, пустую, опять же при втором варианте, почти наверняка возникнут проблемы с областью видимости переменных, так что не советую...
Просто в качестве пожелания:
- никогда не писать код на кнопках.
- не использовать кнопки.
- не использовать on(event), onClipEvent(clipEvent)
- объявлять все функции как свойства _root или объектов какого-то из классов (если какая-нибудь "забытая" функция в давным-давно удаленном клипе запустит setInterval() например - потом иди ищи откуда оно взялось %)
- однотипные объекты создавать програмно, ссылки на них для простоты обращения хранить опять же в _root.
- не создавать функций и переменных в них с именами идентичными названию функции - это дико усложняет понимание написанного =(
ну и под конец... это вот вообще безумие...
MovePointer = function (yPos)
{
this._parent.pointer._y = yPos;
return(undefined);
};
Зачем нужна функция которая всегда возвращает undefined (если ты специально ничего не будешь возвращать, то undefined получишь в любом случае)? При том, что нет ни одного вызова, где бы тебе требовалось, чтобы эта функция вообще что-то возвращала...
перенес весь код из onClipEvent (load){} на кнопку "Сначала"
on (release)
{
function MoveJ(j)
{
this._parent.JVal.val.text = "j=" + j;
this._parent.JVal._x = ObjArray[j]._x;
MovePointer(this._parent.for_j._y);
if (j > 1)
{
moveJ = true;
} // end if
} // End of the function
function MoveI(i)
{
this._parent.IVal.val.text = "i=" + i;
this._parent.IVal._x = ObjArray[i]._x;
MovePointer(this._parent.for_i._y);
if (i > 0)
{
moveI = true;
} // end if
} // End of the function
////////////
ArrayToSort = new Array(5, 7, 2, 3, 0, 8, 5, 2);
ObjArray = new Array(this._parent.obj1, this._parent.obj2, this._parent.obj3, this._parent.obj4, this._parent.obj5, this._parent.obj6, this._parent.obj7, this._parent.obj8);
i = 0;
j = 0;
k = 0;
l = 0;
MoveJ(j);
MoveI(i);
timeToColor = 0;
timeToColormax = 15;
timeToMoving = 0;
timeToMovingmax = 30;
gotoAndPlay(nextFrame);
standart = true;
changePointer = false;
goToR = false;
goOutOfR = false;
changePlace = false;
counter = 0;
playingVar = true;
MovePointer = function (yPos)
{
this._parent.pointer._y = yPos;
return(undefined);
};
}
И теперь нажав кнопку "Сначала" для объявления всех переменных и после этого нажав кнопку "Control" ничего не происходит
И Как его теперь загрузить этот код при загрузке клипа (или можно как-то съэмитировать нажатие кнопки "Сначала")
function init() {
_root._arr2sort = [];
var _l1:MovieClip = _root.createEmptyMovieClip("holder_mc", 0);
for (i=0; i<8; i++) {
_l1.attachMovie("ball", "ball"+i+"_mc", i*2, {_y:10, _x:10+i*65, _cnt:Math.floor(Math.random()*10)});
_l1["ball"+i+"_mc"].c_txt.text = _l1["ball"+i+"_mc"]._cnt;
_root._arr2sort.push(_l1["ball"+i+"_mc"]._cnt);
}
_root._l1 = _l1;
}
init();
function sortArr_fn() {
trace(_root._arr2sort);
var counter:Number = 0;
_root.onEnterFrame = function() {
for (i=counter; i<_root._arr2sort.length; i++) {
var checked:Number = _root._arr2sort[counter];
var evaluated:Number = _root._arr2sort[i+1];
trace("checked "+checked+" evaluated "+evaluated);
if (checked>evaluated) {
_root._arr2sort[counter] = evaluated;
_root._arr2sort[i+1] = checked;
}
}
counter++;
counter>_root._arr2sort.length ? delete _root.onEnterFrame : _root.resetBalls();
trace(_root._arr2sort);
};
}
function resetBalls() {
for (c=0; c<_root._arr2sort.length; c++) {
_root._l1["ball"+c+"_mc"].c_txt.text = _root._arr2sort[c];
}
}
ld_btn.b_txt.text = "Reload array";
go_btn.b_txt.text = "Sort array";
ld_btn.onRelease = function(){
_root.init();
}
go_btn.onRelease = function(){
_root.sortArr_fn();
} Всю работу за тебя я все равно не сделаю %)
15083
wvxvw, спасибо за помощь :bye:
Вот что я сделал:
1) я ничего не менял во search.fla
я сделал еще одну флешку main.fla в кадре которого добавил
_root.createEmptyMovieClip("search", _root);
_root.search.loadMovie("search.swf");
this.Reload.swapDepths(_root.getNextHighestDepth());
this.graph.swapDepths(_root.getNextHighestDepth());
и на кнопку "Сначала" повесил
on (release)
{
if (this._parent.search == Number(this._parent.search))
{
unloadMovieNum(this._parent.search);
}
else
{
this._parent.search.unloadMovie();
} // end if
_root.createEmptyMovieClip("search", 0);
_root.search.loadMovie("search.swf");
}
Все работает, но есть одно НО:
во флешке search.fla я добавил звук:
1) В библиотеку добавил звук
2) прописал для этого звука в Linkage - Music
3) на кнопку "Control" я добавил еще инициализацию звука и его запуск при запуске флешки
onClipEvent (load)
{...
var my_sound = new Sound();
var cur_offset = 0;
music_on = true;
my_sound.attachSound("Music");
my_sound.start();
....}
4) и на экземпляр кнопки But (он внутри кнопки "Control") написал код для паузы и воспроизведение звука с места паузы
on (release)
{
if (this._parent.playingVar & this._parent.music_on)
{
trace("Воспроизведение остановлено.");
_root.cur_offset = this._parent.my_sound.position;
this._parent.my_sound.stop();
this._parent.playingVar = false;
this._parent.music_on = false;
this._parent._parent.sgraph._alpha = 100;
this._parent._parent.pgraph._alpha = 0;
}
else
{
trace("Воспроизведение начато.");
this._parent.my_sound.start(_root.cur_offset / 1000, 1);
this._parent.playingVar = true;
this._parent.music_on = true;
this._parent._parent.sgraph._alpha = 0;
this._parent._parent.pgraph._alpha = 100;
} // end if
}
Запуская на проигрывание файл search.fla - все работает - запускается при старте звук и работает пауза звука и его воспроизведение с места паузы
Теперь помещаю откомпелированный файл search.swf в папку где у меня main.swf
запускаю этот main.swf и вижу что звук не проигрывается :( - ни с самого запуска, ни с нажатия на кнопку Пауза-Плей
В чем проблема??? Значит он не видит мой звук или что???
Прикрепляю все эти файлы - ТОЛЬКО В ФАЙЛ search.fla НУЖНО СРАЗУ ИМПОРТИРОВАТЬ КАКОЙ-НИТЬ ЗВУК(я его пока его вырезал, т.к. с ним флешка много весит и сюда его нельзя прикрепить)
И В LINKAGE ЗВУКА НАПИСАТЬ Music для того чтобы можно было проверить его работу
Почему нет звука - он его не видит что ли, или как???
можно ли как-нить подрубить звук в моем случае???
Все что у тебя записано в onClipEvent (load){} вынеси в отдельную ф-цию которая будет по твоему желанию восстанавливать все переменные в исходное значение (предварительно удалив все созданное в процессе работы).
попробовал так сейчас сделать:
перенес весь код в несколько функций в первый кадр слоя Action Script
в функцию Zapolnenie(); прописал восстанавление всех переменных в исходное значение
и вызываю ее кнопкой "Сначала"
on(release){
Zapolnenie();
}
но что-то она некорректно работает
Нужно наверное еще предварительно удалить все созданное в процессе работы. Как мне это сделать???
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.