![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Доброе время суток!
Я решил сделать менюшку напоминающую смену окон в висте. Несколько кнопок, которые прячутся друг за дружкой, при нажатии на любую они меняются местами по кругу(в дальнейшем это должно будет происходить при вращении колёсика мышки...). Меняются координаты и размеры в соответствии с положением кнопки, а также глубина кнопок, дабы они правильно друг дружку перекрывали. Всё вродебы работает, НО кнопка с именем "b4" всегда находится поверх двух соседних, в то время как все остальные меняют свою шлуюину правильно. Люди помогите плз не могу найти что я не так делаю. Вот код плюс сам файл: for(var i=0;i<5;i++){ this["b"+i]._alpha=50+10*(i+1); } //-------------------------------------------------------------------------------- var xx:Array = new Array(this.b0._x,this.b1._x,this.b2._x,this.b3._x,this.b4._x); // массив с координатам x var yy:Array = new Array(this.b0._y,this.b1._y,this.b2._y,this.b3._y,this.b4._y); // массив с координатам y var dep:Array = new Array(this.b0.getDepth(),this.b1.getDepth(),this.b2.getDepth(),this.b3.getDepth(),this.b4.getDepth()); // массив с глубинами кнопок var mcs:Array = new Array("b0","b1","b2","b3","b4"); // массив с названиями кнопок var mcs_:Array = new Array(); // массив с перемещёнными названиями кнопок var z = 0; // количество перемещённых названий //-------------------------------------------------------------------------------- function arr_dreh():Void{ // функция для перемещения названия кнопок в массиве var d=0; // первый индекс не тронутого элемента mcs for(var j=0;j<z+1;j++){ // копируем значение последнего элемента массива mcs в первый элемент mcs_ mcs_[z-j]=mcs[4-j]; } for(var k=z+1;k<5;k++){ mcs_[k]=mcs[d]; // заполняем оставшиеся элементы mcs_ не тронутыми элементами mcs d++; // индекс следующего не тронутого элемента mcs } if(z<4){z++;}else{z=0;} // увеличиваем количество перемещённых названий, если оно превышает возможное количество, онулирываем его } //-------------------------------------------------------------------------------- function change_urovenj(){ arr_dreh(); // Запускаем функцию перемещения названий кнопок for(var c=0;c<5;c++){ // В соответствии с перемещёнными названиями кнопок, меняе свойства кнопок: this[mcs_[c]]._alpha=50+10*(c+1); // прозрачность this[mcs_[c]]._x=xx[c]; // x координата this[mcs_[c]]._y=yy[c]; // y координата this[mcs_[c]]._width=76+c*10; // широта this[mcs_[c]]._height=22+c*5; // высота this[mcs_[c]].swapDepths(dep[c]); // глубина updateAfterEvent(); } } //--------------------------------------------------------------------------------
__________________
Ошибок не делает лишь тот, кто ничего не делает! |
|
|||||
|
Во первых использовать массивы крайне не красиво. Нужно как можно сокращать объем выделяемой памяти, а как мы знаем массивы очень ей любят попитаться.
Во вторых есть такие методы дебагинга как trace и метод жёсткого изменения. Тоесть отключить автоматическое изменение программы и "тыкать" в ручную. В третих очень странно так как я со старта пытался клипу присвоить какую либо глубину, не случаеться. Какойто революционер БеЧетвёртый. ДУмал может сам мувик, подставлял другой, переменновывал, всё тоже. Другие свойства норм, а вот функция свапДептчь в БеЧетвёртом что балабол в банке. Он есть но толку ноль. Добавлено через 4 минуты Жаль, хочеться помочь но чтото не могу понять и сам в чём дело
__________________
return this... |
|
|||||
|
Регистрация: May 2008
Сообщений: 19
|
Я не могу открыть файл, unexpected file format, у меня mx2004 7.2
Но мне кажется, ошибка в месте: По-моему, надо Хотя я не уверен, проверить-то не могу... |
|
|||||
|
2 the scratch
попробывал не получается. Да и по идее не должен этот участок кода на это влиять, онотносится ведь к сортировке массива...а не к изменениям его свойств...
__________________
Ошибок не делает лишь тот, кто ничего не делает! |
|
|||||
|
Регистрация: May 2008
Сообщений: 19
|
Sajaxt, вообще да, я чего-то ступил. Просто код так написан... Мне всё равно кажется, что где-то в arr_dreh() ошибка, ничего не могу с собой поделать.
|
|
|||||
|
шизонуться можно только что сменил подход к изменению глубины а именно:
и всё бестолку
__________________
Ошибок не делает лишь тот, кто ничего не делает! |
|
|||||
|
Там не в сортировке дело, я кидал "б4" на минусовую глубину, и она была минусовая, а все остальные "плюсовые". И что? А ничего, хоть глубины разные но "б4" слишком гордый и висит выше всех. Пробывал распределить кнопки по слоям, тот же эффект. Не знаю всё дело в имени, но странно как то эт.
__________________
return this... |
|
|||||
|
добавил новую кнопку, с именем b5. Теперь она сопротивляется изменению свойств!
__________________
Ошибок не делает лишь тот, кто ничего не делает! |
|
|||||
|
Проблема в самом swapDepths() он не работает!!! Пробуйте сами динамичеси изменить глубину, не получиться!!!
function change_urovenj(){ bx=_root.b0._x; by=_root.b0._y; bw=_root.b0._width; bh=_root.b0._height; bd=_root.b0.getDepth(); for(var c=0;c<4;c++) { //_root[mcs_[c]]._alpha=50+10*(c+1); // прозрачность _root['b'+c]._x=_root['b'+(c+1)]._x; // x координата _root['b'+c]._y=_root['b'+(c+1)]._y; // y координата _root['b'+c]._width=_root['b'+(c+1)]._width; // широта _root['b'+c]._height=_root['b'+(c+1)]._height; // высота _root['b'+c].swapDepths(_root['b'+(c+1)]); // глубина } _root.b4._x=bx; _root.b4._y=by; _root.b4._width=bw; _root.b4._height=bh; _root.b4.swapDepths(bd); updateAfterEvent(); }
__________________
return this... Последний раз редактировалось AlexCooper; 12.01.2009 в 20:49. |
|
|||||
|
Ладно, swapDepths не работает, а что теперь делать? есть конечно идея создать есче одну не видимую кнопку.. чтобы она была поверх всего. Но как то это не правильно
![]()
__________________
Ошибок не делает лишь тот, кто ничего не делает! |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|