![]() |
2 вопроса в одном!
Привет!
Вообще голова не соображает.. ((( в чем проблемы :confused: 1.Хотел сделать как бы кнопки с простенькой анимацией... И не получатеся только одна штука ( ---- При наведении двигается треугольничек, а при отведении мышки от кнопки треугольничек останавливается. Когда нажимаешь то треагольничек меняет цвет и двигается... Проблема в том что при нажатии на другую кнопку на прошлой происходит анимация и только останавливается когда убираешь с той кнопки мышку... ( Тобишь проигрывается 2 анимации, хотя должна проигрываться одна... 2. После "// temp" идет код который странно как- то работает... Если его поставить перед "// Buttons", то он вообще не работает, а если в конец, то в "// Buttons" пропадают 1, 2 и 3 кнопка... В чем проблема? Код:
//Buttons(сори если описал вопросы непонятно) |
Сложно разобраться, приколи исходник или напиши подробные коменты
|
Короче, ты чего-то намудрил и сам себя запутал.... Не понимаю, что вы так все мудрите?:) Во-первых, лучше дублируй клип, так как, если я не ошибаюсь, при attach-е не все вложенные в attach-ируемый клип объекты тоже дублируются - это надо производить отдельно. Проще сделай так
for(i=0;i<button_name.length;i++){ duplicateMovieClip("button", "button"+i, i); setProperty("button"+i, _x, нужный x) setProperty("button"+i, _y, нужный y) //дальше вбиваем текст в кнопки и проч. //задаешь события, как и раньше } //и прочая дурь Кнопки исчезают у тебя потому, что у них совпадают уровни! У клипов не должны совпадать уровни (уровень задается третьим параметром в функции). Смотри, у тебя вначале кнопки приобретают уровни 0,1,2,3,4,5,6, а потом эти "mini" тоже уровни 0,1,2 (и три кнопки исчезают). Если бы у тебя массив x был большей длины, исчезло бы все... Я рекомендую создать переменную, в которой будет храниться номер самого высокого уровня. Например allDepths=0 И потом третьим параметром функция дублирования/аттачирования использовать allDepths (только не забывай прибавлять к нему 1). То есть К примеру allDepths++ duplicateMovieClip("button", "button"+i, allDepths); setProperty("button"+i, _x, нужный x); setProperty("button"+i, _y, нужный y); и allDepths++ attachMovie("mini", "mini"+i1, allDepths); Таким образом избежишь ошибок....:) Ну а с остальным я не разобрался - уж извини, лень. Тем более что надо смотреть все сразу, вместе с исходником, или переделывать нафиг весь код.... Попробуй с тем, что я сказал, может, заработает? Или пиши конкретнее, разбей код на участки, тестируй - а то так сложно понять, что там за проблемы. |
Ну одну ошибку сразу вижу...
attachMovie("button", "button"+i, i); attachMovie("mini", "mini"+i1, i1) i и i1 от 0 до кагого то значения depth'ы у тебя получаются одинаковыми....а они должны быть разными (уникальными) |
Стоп, господа. Я так печатать не успею. dekud прав - поскольку создание происходит в цикле, то depth'ы должны различаться, например, во втором случае лучше сделать так:
attachMovie("mini", "mini"+i1, i1+50) Что бы упростить код предлагаю свойства объектам передавать при создании: _root.attachMovie("button", "button"+i, i,{_x:osx[i],_y:osy[i]}); Цитата:
Я лично тоже считаю, что ни к чему плодить на сцене лишние объекты-пустышки, которые нужны только для дублирования. А функцию setProperty() вообще забудь как страшный - это было в пятом флэше, а на дворе - MX2004. 2rojok-online. Похоже, что вся твоя проблема - в дублировании depth'ов. Да и еще, имхо with в последнем цикле - не к месту. |
Код:
_root.attachMovie("button", "button"+i, i,{_xsx[i],_ysy[i]}); |
Код:
_root.attachMovie("button", "button"+i, i,{_x:sx[i],_y:sy[i]}); |
Dindin, интересный способ задания свойств.... Не знал... Я вообще 2004-ый плохо знаю. Раньше такого не было. Спасибо.
|
А насчет дублирования.... Я говорил про attach, так там у меня лично почему-то при аттаче создавался лишь внешний клип, а все вложенные в него игнорировались. Черт знает почему. Может, объяснишь, как можно сделать полный attach? Или я чего-то неправильно делаю... :)
|
Пришли исходник - посмотрим :)
Да, кстати, задание свойств при инициализации еще в MX было. |
Нет исходника.... :) Просто встречался с этим, когда делал игру Puzzle, с загружаемыой картинкой. Например, писал:
attachMovie("a","a1",10) в "a" были и другие клипы, но "a1" их не содержал. :( Да забей, duplicateMovieClip круче.... А в MX не знал..... Увы. Еще раз спасибо. |
Имхо duplicate и attach - для разных целей, а поэтому судить что круче - некорректно :) Что адекватнее в том или ином случае - вот вопрос :)
|
2 artfla$her
ну раз пошла такая пьянка...то всетаки начиная с MX корректнее писать mc.duplicateMovieClip("new_mc",depth); а свойства можно задавать this["button"+i]._x = 10; а насчет attachMovie("a","a1",10) это были какие-то твои внутренние ошибки... так как даная функция работает вполне адекватно....:) кстати setProperty - это прежиток даже не 5 а 4:) |
2Decud Ненадо путать функцию duplicateMovieClip() и метод MovieClip.duplicateMovieClip () - все таки разные вещи. К вопросу о корректности - Имхо это употрябляется в разных случаях, так что нельзя сказать, что запись типа
duplicateMovieClip("mc","new_mc",depth); некорректна Обращение кобъекту как к элеменнту ассоциированного массива (this["button"+i]._x = 10;) тоже для отдельных случаев канает, а где-то приходиться и eval'ом пользоваться. :) |
Вложений: 1
Всем большое спасибо! Со 2 вопросом разобрался, а вот с первым нет ( И поэтому выкладываю пример 1 вопроса...
|
Dindin пожалуйста не говори мне этого страшного слова eval, когда мне дали класс написанный в AS2 и где-то он работал, а где-то нет я долго не мог понять а что за фигня...
но когда я залез в код и увидел там eval я сперва долго и упроно ругался а потом все исправлял к виду mc[name].... поэтому согласен с УильямБрэдберри http://www.flasher.ru/tutorial/viewtut.php?id=138 Цитата:
|
if (_root.lastbutton == this._name) {
this.tr.play(); // проблема вроде здесь } else { this.tr.gotoAndStop(1); } |
Вложений: 1
2decud Читай Уила внимательно - он говорит, что без eval() можно обойтись в БОЛЬШИНСТВЕ случаев. Я например использую его что бы присвоить переменной ссылку на динамически созданный объект, Для этого Object[instance] не всегда ппрокатывает:)
2rojok. Лови файло. |
dekud
Я знаю что в этом (, но не знаю как исправить ( Dindin Дык у тя тоже самое что и уменя... Только у тя при нажатии останавливается треугольник, а у меня двигается) |
2 Dindin...спор впринципе бесполезный:))...
каждый пишет исходя из тех граблей на котрые наступал... и из того к чему привык.... лично я совершенно спокойно обхожучь без eval....ну а кому-то так удобнее.... |
rojok-online
тогда еще раз что тебе надо... если ты хочешь чсобы нажал на кнопку треуголиник стал красным, отпустил снова стал белым тогда вместо все этой конструкции напиши: Код:
|
ну и естественно
добавь Код:
this["button"+i].onReleaseOutside = this["button"+i].onRollOut |
dekud
ДА все работает кроме того что при нажатии на сначало на кнопку 1, а потом на кнопку и чтоб на кнопки 1 исчезла анимация.... Я понятно ибъяснил в чем у меня проблема? |
Если честно не понял фразу....
опиши таким образом 1. Наводим на кнопку - просиходи то-то 2. Убираем мышь происходит то-то 3. Нажимае мышь на кнопке - то-то 4. Отпускаем мышь после нажати - а - на кнопке б - вне кнопки |
dekud
1. При наведении мыши на кнопку то треугольничек двигается, а при убирании быши снановиться на исходное место - это Работает 2. При нажатии на кнопку треугольничек меняет цвет и постоянно двигается не зависимо от того наведена ли на нём мышь или нет- это Работает 3. При нажатии на кнопку 2, у кнопки 1 прекращалась анимация и треугольничек менял цвет на исходный - не работает Если не сложно постучи в асю 141486911 |
Вложений: 1
вот посмотри...
|
:D А!!!!!!!!! Мэн Спасибо!!!!!
|
| Часовой пояс GMT +4, время: 13:14. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.