Форум 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=131636)

kassini 25.10.2009 03:36

применение одного и того же кода к разным мувикам
 
Подозреваю, что вопрос не очень сложный, но не смог нормально сформулировать для поиска. Поэтому попытаюсь объяснить здесь, что я хочу:
Есть меню из надписей (кнопок-мувиков). Нужно, чтобы однажды написанный код анимации (например, изменение размера мувика при наведении) автоматически применялся для всех кнопок в списке. Захотел изменить анимацию всех кнопок - поменял этот "исходный код" и каждая кнопочка, соответственно, поменяла свое поведение.
Как я понимаю, тут нужна динамическая подмена имени в этом "исходном коде" на имя (instance name) кнопки, на которую в данный момент наведен курсор, но не знаю, как этого добиться. Помогите, плз! :wacko:

Добавлено через 1 час 37 минут
спасибо, кажется, уже разобрался )

fessor 25.10.2009 15:45

могу предложить свой вариант
Код AS1/AS2:

function animateButton (someButt:MovieClip){
}

и юзать эту функцию к разным кнопкам по их нажатию, вотъ

Dumpil 26.12.2009 17:41

у меня похожая проблема
у меня есть 20 кнопок
я хочу что бы при наведении на любую из них она увеличивалась на 10% к примеру

function ab (bot:MovieClip){
bot._xscale+=10;
bot._yscale+=10;
}
как теперь вызвать функцию именно в момент наведения на кнопку ?

mooncar 26.12.2009 18:09

Немного по-другому:
Код AS1/AS2:

for (i = 1; i <= 20; i++) {
  _root['bot' + i].onRollOver = ab;
}
 
function ab (){
  this._xscale += 10;
  this._yscale + =10;
}

Если кнопки не на _root, то замените путь.
Оформите в посте код тегами AS и не склеивайте операторы, выражения и прочие элементы - код делается неудобочитаемым - и для вас , и для остальных.
К тому же быстрее он работать от этого не станет. :)

VVall 26.12.2009 18:35

Цитата:

Сообщение от mooncar (Сообщение 875428)
не склеивайте операторы, выражения и прочие элементы - код делается неудобочитаемым - и для вас , и для остальных.

Мне, наоборот, сильно мешают все эти лишние пробелы где попало. Что делать?

Dumpil 26.12.2009 18:44

спасибо, я пока что начинающий и мое представление о ас составляют крупицы познаний с прошлого + то в чем ща разобрался ) поэтому правильность написания кода это воще космос )
я так понял что в вашем коде для кнопок от 1й до 20й (bot1, bot2 ... bot20) будет выполянтья функция аб
а если все кнопки лежат в мувиклипе main где поменятьеться путь ?

mooncar 26.12.2009 18:46

Как что делать? Если на люди код не выносите, пишите весь код в одну строчку, где это возможно, как некоторые HTML-параноики :)
Если код на публику выносится, лучше, чтобы он был читаемым.
Так больше вероятность получения помощи по вопросу.
Тэги, кстати, тоже не для модераторов введены, а для пользователей форума.
Например, когда вижу нечто вроде for(i=1;i<10;i++){, и так много строк, сразу разбираться желание пропадает.

Добавлено через 46 секунд
Цитата:

Сообщение от Dumpil (Сообщение 875437)
а если все кнопки лежат в мувиклипе main где поменятьеться путь ?

Код AS1/AS2:

for (i = 1; i <= 20; i++) {
  main['bot' + i].onRollOver = ab;
}


udaaff 26.12.2009 18:51

Цитата:

Сообщение от VVall (Сообщение 875435)
Мне, наоборот, сильно мешают все эти лишние пробелы где попало. Что делать?

А где попало и не надо ставить. Есть четкие конвенции по оформлению кода. Довольно логичные причем =)

Пробел не ставится между унарным оператором и операндом. Бинарные и тернарные операторы нужно отделять пробелами, иначе читается это все просто отвратительно.

VVall 26.12.2009 19:01

Цитата:

Сообщение от udaaff (Сообщение 875441)
Есть четкие конвенции по оформлению кода. Довольно логичные причем =)

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

Dumpil 26.12.2009 19:04

Код AS1/AS2:

for (i = 1; i <= 20; i++) {
  main['bot' + i].onRollOver = ab;
  main['bot' + i].onRollOut = ab2;
}
 
function ab (){
  this._xscale = + 110;
  this._yscale = + 110;
}
 
function ab2 (){
  this._xscale = + 100;
  this._yscale = + 100;
}

чуть добавил кода и получился нужный эфект ) теперь кнопки перебираються как на пианино ) спасибо что не прошли мимо )


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

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