![]() |
|
||||||||||
|
|||||
|
Вот попробовал сделать по тем советам что получил. Вроде бы работает корректно, посмотрите пожлуйста все ли верно и может можно что нибудь оптимизировать. В частности использование аттачмуви вместо дубликейт.
import mx.transitions.Tween; import mx.transitions.easing.*; // массив с данными var my_array = ['Angelina Jolie', 'Charlize Theron', 'Памелла Андерсон', 'Бритни гг']; var clip_array:Array = new Array(); // будущий массив кнопок var total_j:Number; var i:Number = 0; var j:Number = 0; var offset_j:Number = 0; but._visible = false; // танец с бубном ;) Итак что же мы получаем, при дубликации обьекта, исходный то у нас тоже отображается, что не есть гут. Поэтому прячем его. function whois(j){ // обращение к данным из массива по ключу trace('Today I love ' + my_array[j]); } function create_buttons(j) // cсоздаем кнопки, не знаю как это назвать (j) { clip_array[j] = but.duplicateMovieClip("but"+j, j); // присваиваем массиву значения кнопок clip_array[j]._visible = true; // танец с бубном часть 2 ;) А затем показываем уже дублицированный, конечно можно было аттачить, но я пока этим не пользуюсь. clip_array[j].onRelease = function() { for ( i = j; i < 4; i++) { if(!this.flag){ var tween_1alphadown:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true); } else{ var tween_1alphaup:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true); } this.flag = !this.flag; } whois(this.mark); // ваш пример } if (j>0) { clip_array[j]._y = offset_j; } // расчитывем расстояние до след раздела else { clip_array[j]._y = j * offset_j; } offset_j = clip_array[j]._y + clip_array[j]._height + 5; // 5 это межкнопочное расстояние } for( j = 0; j < 4; j++) { create_buttons(j) // сделал функцию как говорили } Последний раз редактировалось nOobCrafter; 16.12.2008 в 16:23. |
|
|||||
|
удаляем с рабочего стола "прямоугольник".
в библиотеке ставим ему linkage Property: галка на "Экспорт фо экшн скрипт" и на "Экспорт ин фёст фрейм" в поле id вписываем "but_in_lib" import mx.transitions.Tween; import mx.transitions.easing.*; // массив с данными var my_array = ['Angelina Jolie', 'Charlize Theron', 'Памелла Андерсон', 'Бритни гг']; var clip_array:Array = new Array(); // будущий массив кнопок var total_j:Number = 4; var btns_space:Number = 5; // межкнопочное расстояние function whois(j){ // обращение к данным из массива по ключу trace('Today I love ' + my_array[j]); } // cсоздаем кнопки, присваеиваем события и прочие свойства. function create_buttons(j){ // аттачим клип (кнопку) на сцену var btn = this.attachMovie('but_in_lib', 'but_' + j, j); //и сохраняем ссылку в массив clip_array[j] = btn; // расчитывем расстояние до след раздела btn._y = j * (btn._height + btns_space); btn._x = 200; btn.j = j;// запоминаем в кнопке её номер btn.flag = false // в функции события он у вас используется btn.onRelease = btns_on_release; } // описываем событие function btns_on_release(){ for( var i = this.j; i < total_j; i++) { if(!this.flag){ // логика этих твинов мне не понятна... var tween_1alphadown:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true); }else{ var tween_1alphaup:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true); } this.flag = !this.flag; } whois(this.j); // ваш пример } // запускаем создание кнопок for( var j = 0; j < total_j; j++ ){ create_buttons(j) // сделал функцию как говорили } |
|
|||||
|
Спс.. ну эти твины меняют прозраность тех клипов что ниже нажатой кнопки, в оригинале мне их надо смещать, поэтому вместо альфы будет ._y всего то. А это просто для наглядности.
Вот еще вопрос, надо ли нам указывать значение флага заранее. Ведь условие происходит корректно, сразу значение undefined что неравно true, и выполнеятся прописанное условие, в конце функции значение флага принимает true. |
|
|||||
|
ну раз уж вы используете объявление переменных и их типизацию, почему не объявить флаг
![]() лично для меня удобней и наглядней. Добавлено через 3 минуты чтоб не выходить за пределы массива. Последний раз редактировалось Mnilionic; 16.12.2008 в 17:50. |
|
|||||
|
Ясна. спс хотя последнее явно лишнее, мне так нагляднее будет видно что да как используется. А про типизацию щас поищу инфу и почитаю, а то даже не знаю о чем речь.
Добавлено через 21 час 39 минут Блин, дошло дело до использования функций перемещения и открылся еще один косяк. При простом трейсе i все ок, все как надо, но стоит добавить флаги как мы какую то полную ерунду получаем. Проблема вылечилась путем изменения порядка с: function btns_on_release(){ for( var i = this.j; i < total_j - 1; i++) { if(!this.flag){ trace(i) } this.flag = !this.flag; } } Может если кому потом надо будет. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|