Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Глюк с надписью в дубликатах кнопки (http://www.flasher.ru/forum/showthread.php?t=98561)

DJ_ManiaC 16.07.2007 17:24

Глюк с надписью в дубликатах кнопки
 
Вложений: 1
Вопрос в следующем. Непонятно мне почему такое происходит. Делаю несколько одинаковых клипов методом attachMovie, в которых используется одна и таже мувик-кнопка сделаная по принципу тригера. При нажатии на эту кнопку в ней должна изменится надпись. А она, т.е. надпись, при нажатии на первую созданную кнопку меняется как надо, а в последующих отображается та которая забита в шаблоне. Хотя в них переменная которая отвечает за изменение надписи меняется коректно. Если создавать эти клипы с кнопкой внутри вручную - всё ок. Непойму в чём трабл. Для ясности выложил пример. Файл для Flash 8.

DJ_ManiaC 16.07.2007 23:06

Ну что люди? Никто не знает или всем исходник посмотреть лень? Я искал ответ на этот вопрос но так и не нашёл... Помогите пожалуйста разобраться... Там я думаю всё из-за анимации, но почему???

etc 16.07.2007 23:08

Плюс за ап.

DJ_ManiaC 16.07.2007 23:15

Цитата:

Сообщение от __etc
Плюс за ап.

Ну извините... :umnik2: А как ещё быть? Если топа на первой странице нет - его никто не посмотрит и соответственно не ответит... За новую тему тоже бы плюс добавили...

etc 16.07.2007 23:17

Цитата:

Сообщение от DJ_ManiaC
Ну извините... :umnik2: А как ещё быть? Если топа на первой странице нет - его никто не посмотрит и соответственно не ответит... За новую тему тоже бы плюс добавили...

Ждать надо ответа, а не через несколько часов тему поднимать.
Есть такая вещь, как «Новые сообщения». Оттуда никуда тема не денется.

Wolsh 17.07.2007 00:41

Замени matchNumber на растущую переменную, хоть на тот же NextLayer, и всё заработает
у тебя эти кнопки имена одинаковые получают при аттаче

DJ_ManiaC 17.07.2007 09:38

Спасибо, смысл понял и разобрался. У меня просто в другом коде matchNumber берётся из XML. Но вот строку где задаётся значение этой переменной я нечаянно при редактировании кода удалил, поэтому и возник такой глюк.

DJ_ManiaC 20.07.2007 10:48

Разобрался с одним, теперь другой вопрос появился и опять по той же кнопке. Немного переделал файл - пытаюсь теперь на все созданные програмно кнопки, повесить процедуру нажатия.
До изменения код был такой:
Код:

NextStringY = 0
NextLayer = 0
n = 10
while (NextLayer != n) {
        attachMovie("Str_ListBotton","Str_List" + matchNumber, NextLayer, {_x: 0, _y:NextStringY});
        NextStringY += 18
        NextLayer += 1
}

После изменения стал такой:
Код:

NextStringY = 0
NextLayer = 1
matchNumber = 1
n = 10
while (NextLayer != n) {
        var targetClip:MovieClip = createEmptyMovieClip("Match_" + matchNumber, NextLayer);
        targetClip.attachMovie("Str_ListBotton","Str_ListBotton", 0);

// Вот с этой функцией кнопка нормально не работает       
        targetClip.Str_ListBotton.ListBotton.onPress = function () {
                trace(targetClip);
        }
       
        NextStringY += 18
        NextLayer += 1
        matchNumber += 1
}

То что некоректно работает выделил в коде...
Подскажите почему когда добавляю функцию на нажатие кнопки, она работает, а все функции что внутри кнопки нет...
И ещё интересно, как сделать чтоб при нажатии выводился "Интенс Нейм" пустого клипа который создаётся в моём коде, и в который аттачится клип с кнопкой.

Wolsh 20.07.2007 13:19

у тебя там наверно ролловеры пересекаются? были навешаны на fon

DJ_ManiaC 20.07.2007 13:45

Процедура РоллОвер есть внутри кнопки, но она по идее должена относится к той кнопке на которую наводишь мышку, по крайней мере я думал что именно так оно и будет... Или у РоллОвера есть какие-то ограничения или специфики применения? Можно конечно сделать весь код для onPress внутри кнопки-мувика, и всё это будет работать (проверял), но я хочу эту кнопку применять в нескольких местах, и получается что общее между ними будет только анимация. Соответственно, нужно как-то сделать, чтобы событие onPress обрабатывалось и внутри кнопки и внешним кодом... И ещё внутри должны быть функции RollOver и RollOut - они сейчас именно там и есть, т.е. внутри кнопки-мувика.
Даже если я уберу процедуры к RollOver и RollOut - эффекта никакого... Анимация по нажатию так же не воспроизводится, выполняется только процедура onPress которая обозначена в РУТЕ...
Кому лениво смотреть исходник код внутри мувика кнопки такой:
Код:

BottonLabel = label_1
fon.onRollOver = function() {
        ArrowAnim.cursor = true;
        ArrowAnim.play();
        Ligth.play()
}
fon.onRollOut = function() {
        ArrowAnim.cursor = false;
        ArrowAnim.play();
        Ligth.play()
}
fon.onPress = function() {
        if (BottonLabel == label_1) {
                BottonLabel = label_2;
                ArrowAnim.play();
                LabelAnim.play();
                LightAnim.play();
        } else {
                BottonLabel = label_1
                ArrowAnim.play();
                LabelAnim.play();
                LightAnim.play();
        }
}


Wolsh 20.07.2007 15:34

И что мешает тебе вынести этот код в рут и включить в рутовое событие на кнопку?
Две области на разных слоях полностью совпадают и на обе - ролловер(в это понятие входят все события - пресс, аут и т.д.)
Как же ты думаешь плеер решит, на что ты нажал - на верхний слой или на нижний? Так просто нельзя делать, не работает. Придется искать вариант с одной активной областью. В данном случае это не особенно сложно, бывают ситуации гораздо хуже :)
pS Чтоб узнать Instance Name есть cвойство _name
ppS И выложи уже новый исходник. И хмелку положи для примера.

DJ_ManiaC 20.07.2007 18:18

Вложений: 1
Конечно можно всё в руте прописать, но я думаю это не очень удобно дублировать код на анимацию в разных частях клипа...
Я думал что так делать можно, объявляя в разных функциях события на onPress, onRoll и т.д., для одного МУВА. Просто по идее они должны одновременно вызываться... Ведь работает же несколько кнопок положенных на сцену вручную... Или же програмно, но без объявления в руте функции onPress, чтоб весть код был внутри кнопки.
Новый исходник прилагается...
P.S. Как в моём цикле в процедуре на нажатие сделать чтоб выводился Intance Name нужного объекта???
Пробовал изменить строку с
Код:

trace(targetClip);
на
Код:

trace(targetClip._name)
но мне выводится при нажатии на любую кнопку только имя последнего обработанного клипа. Пробовал так же запихивать при обработке переменную в мувик кнопки, но как не старался к ней обратится, мне выводт Undefined. Подскажите как правильно в цикле это всё обозначить, чтоб выводилась нужная переменная из определённого клипа (клипы имеют название к примеру "Str_ListBotton"+X. где X это произвольный номер кнопки)

Что такое хорошо? 20.07.2007 22:22

Цитата:

Сообщение от DJ_ManiaC
...... Как в моём цикле в процедуре на нажатие сделать чтоб выводился Intance Name нужного объекта???.... Подскажите как правильно в цикле это всё обозначить, чтоб выводилась нужная переменная из определённого клипа .....

пост # 8
http://flasher.ru/forum/showthread.php?t=84941

Wolsh 23.07.2007 13:04

Ну да, у тебя тоже this._parent._parent._name для кнопочек будет разным, а всё остальное - одинаковым.
Ну а функции наверно можно в цикле на таргет вешать - не смотри что target._name одинаковые, родительские клипы - разные, так что сами клипы тоже разные.

DJ_ManiaC 23.07.2007 16:20

Что такое хорошо? Спасибо за пример... Подумав я сделал немного по другому:
Поменял код цикла на следующее:
Код:

while (NextLayer != n) {
        var targetClip:MovieClip = createEmptyMovieClip("Match_" + matchNumber, NextLayer);
        targetClip.attachMovie("Str_ListBotton","Str_ListBotton", 0, {_x: 0, _y:NextStringY});
        targetClip.matchNumber = matchNumber
        targetClip.Str_ListBotton.ListBotton.onPress = function () {
                trace(this._parent._parent.matchNumber);
        };
       
        NextStringY += 18
        NextLayer += 1
        matchNumber += 1
}

Мои непонятки были связанны с путями по которым нужно ссылаться на нужные переменные. Почитав нужную литературку - до меня дошло что нужно использовать относительный путь от от объявляемой функции к переменной...

Wolsh 23.07.2007 17:54

Я так понял тебе типа этого надо? Глянь переработанный примерчик.
Извини что выходные промолчал, у меня молнией сетевуху прожгло :) Серьёзно!

DJ_ManiaC 23.07.2007 23:53

Wolsh Спасибо что остался неравнодушным к моей проблеме, и направил на путь истинный :) Да нужно было именно это, но я сам уже всё доделал - код в моём предыдущем сообщении. Правда там я ещё не перенёс код для анимации из мувика-кнопки. :) У меня весь косяк был связан с непониманием путей... точнее как они в функции могут работать. Теперь я удачно убрал этот пробел из своих знаний :)


Часовой пояс GMT +4, время: 17:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.