Просмотр полной версии : применение одного и того же кода к разным мувикам
Подозреваю, что вопрос не очень сложный, но не смог нормально сформулировать для поиска. Поэтому попытаюсь объяснить здесь, что я хочу:
Есть меню из надписей (кнопок-мувиков). Нужно, чтобы однажды написанный код анимации (например, изменение размера мувика при наведении) автоматически применялся для всех кнопок в списке. Захотел изменить анимацию всех кнопок - поменял этот "исходный код" и каждая кнопочка, соответственно, поменяла свое поведение.
Как я понимаю, тут нужна динамическая подмена имени в этом "исходном коде" на имя (instance name) кнопки, на которую в данный момент наведен курсор, но не знаю, как этого добиться. Помогите, плз! :wacko:
Добавлено через 1 час 37 минут
спасибо, кажется, уже разобрался )
могу предложить свой вариант
function animateButton (someButt:MovieClip){
}
и юзать эту функцию к разным кнопкам по их нажатию, вотъ
у меня похожая проблема
у меня есть 20 кнопок
я хочу что бы при наведении на любую из них она увеличивалась на 10% к примеру
function ab (bot:MovieClip){
bot._xscale+=10;
bot._yscale+=10;
}
как теперь вызвать функцию именно в момент наведения на кнопку ?
Немного по-другому:
for (i = 1; i <= 20; i++) {
_root['bot' + i].onRollOver = ab;
}
function ab (){
this._xscale += 10;
this._yscale + =10;
}
Если кнопки не на _root, то замените путь.
Оформите в посте код тегами AS и не склеивайте операторы, выражения и прочие элементы - код делается неудобочитаемым - и для вас , и для остальных.
К тому же быстрее он работать от этого не станет. :)
не склеивайте операторы, выражения и прочие элементы - код делается неудобочитаемым - и для вас , и для остальных.
Мне, наоборот, сильно мешают все эти лишние пробелы где попало. Что делать?
спасибо, я пока что начинающий и мое представление о ас составляют крупицы познаний с прошлого + то в чем ща разобрался ) поэтому правильность написания кода это воще космос )
я так понял что в вашем коде для кнопок от 1й до 20й (bot1, bot2 ... bot20) будет выполянтья функция аб
а если все кнопки лежат в мувиклипе main где поменятьеться путь ?
Как что делать? Если на люди код не выносите, пишите весь код в одну строчку, где это возможно, как некоторые HTML-параноики :)
Если код на публику выносится, лучше, чтобы он был читаемым.
Так больше вероятность получения помощи по вопросу.
Тэги, кстати, тоже не для модераторов введены, а для пользователей форума.
Например, когда вижу нечто вроде for(i=1;i<10;i++){, и так много строк, сразу разбираться желание пропадает.
Добавлено через 46 секунд
а если все кнопки лежат в мувиклипе main где поменятьеться путь ?
for (i = 1; i <= 20; i++) {
main['bot' + i].onRollOver = ab;
}
Мне, наоборот, сильно мешают все эти лишние пробелы где попало. Что делать?
А где попало и не надо ставить. Есть четкие конвенции по оформлению кода. Довольно логичные причем =)
Пробел не ставится между унарным оператором и операндом. Бинарные и тернарные операторы нужно отделять пробелами, иначе читается это все просто отвратительно.
Есть четкие конвенции по оформлению кода. Довольно логичные причем =)
Ссылку, если можно. Пока я таких не встречал, в каждой конторе были свои многостраничные соглашения по оформлению кода. На мой взгляд, ручное их соблюдение - это огромная трата времени впустую, форматирование кода должно быть автоматизировано.
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;
}
чуть добавил кода и получился нужный эфект ) теперь кнопки перебираються как на пианино ) спасибо что не прошли мимо )
Ссылку, если можно. На мой взгляд, ручное их соблюдение - это огромная трата времени впустую, форматирование кода должно быть автоматизировано.
http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions Конвенции по AS3, но для AS2 тоже сгодятся.
На мой взгляд, ручное их соблюдение - это огромная трата времени впустую, форматирование кода должно быть автоматизировано.
Нет никакой траты времени. Абсолютно. Наоборот, порядок в коде -- это экономия времени.
Автоформатирование нужно лишь в том случае, если к вам в руки попадает чужой, плохо оформленный код.
А вы читали, что написано по вашей ссылке? Эти "чёткие конвенции" - точно такой-же местный стандарт, какие я видел раньше, в данном случае для компонентов отдельно взятого фреймворка. И там во введении сказано, что часть стандартов взята с потолка.
Никакой траты времени? Говоря только о пробелах: сравните размер файла с пробелами и без. Исходя из этого и из максимальной скорости нажатия на пробел (самую неудобную клавишу, между прочим) можно посчитать, сколько именно занимает эта "никакая трата" на то, что можно сделать нажатием одной клавиши.
А вы читали, что написано по вашей ссылке? Эти "чёткие конвенции" - точно такой-же местный стандарт, какие я видел раньше, в данном случае для компонентов отдельно взятого фреймворка. И там во введении сказано, что часть стандартов взята с потолка.
А где по вашему должны быть прописаны конвенции, чтобы быть неместным стандартом? В конституции российской федерации?
Никакой траты времени? Говоря только о пробелах: сравните размер файла с пробелами и без. Исходя из этого и из максимальной скорости нажатия на пробел (самую неудобную клавишу, между прочим) можно посчитать, сколько именно занимает эта "никакая трата" на то, что можно сделать нажатием одной клавиши.
Если у вас это отнимает время, могу лишь посоветовать научиться хорошо печать. А время в основном будет уходить на разбор этого кода, а не на набор. Вы все-таки не машинисткой работаете, объемы тут поменьше.
И вот, к примеру, вы же расставили в своем посте пробелы после знаков препинания =). Много времени у вас на это ушло? А читается все нормально и не режет глаз =)
причем =)
На мой взгляд, ручное их соблюдение - это огромная трата времени впустую, форматирование кода должно быть автоматизировано.[/QUOTE]
Нажмите Ctrl + Shift + F в окне действий, отформатирует.
Пожалуйста.
Я не про += говорил. :) А про приклейку цифр главным образом.
Добавлено через 1 минуту
Нажмите Ctrl + Shift + F в окне действий, отформатирует.
У меня часто бывает по 1000 - 2000 строк. Никогда автоформат не смог их съесть. :)
На все 100 согласен с udaaff - аккуратное написание кода должно получаться само собой, при написании кода.
Экономит кучу времени по зрительной навигации в больших массивах строк, полезность этого несоизмерима с затратами на нажатие пробела.
К тому же, когда нет пробелов, элементарные конструкции кода превращаются порою в таких монстров, что страшно смотреть.
Тогда самому же будет удобнее, например, покопаться в своем же коде годичной давности.
С ужасом смотрю сейчас свои строки 2-х летней давности (мои первые работы).
У меня нормально форматирует, без проблем. Flash CS3.
Два года назад - первые работы? Отличный результат изучения флэша за два года.
В 9, кажется, изначально баг был с автоформатом. Сейчас, вроде, все нормально.
В 9, кажется, изначально баг был с автоформатом. Сейчас, вроде, все нормально.
У меня CS3 (9-ка). Видимо, этот баг и проявляется.
У меня баг тоже есть. Причем я заметил некоторые закономерности. В большинстве случаев помагает ставить ";" в конце строк.
есть надоработочка
при увеличении кнопки она теряеться за другими
попробывал использовать getNextHighestDepth() - не получаеться (
function ab (){
this.getNextHighestDepth();
this._xscale = + 110;
this._yscale = + 110;
}
Это от непонимания того, что делает getNextHighestDepth(). А этот метод просто-напросто выдает инфу о том, какой следующий уровень свободен.
А ставит на нужный уровень уже метод swapDepths()
Поэтому сделайте так:
//найдем свободный уровень внутри main - он будет выше всех занятых
var topLevel:Number = main.getNextHighestDepth();
function ab (){
this._xscale = 110; //плюсы тут ни к чему
this._yscale = 110;
this.swapDepths(topLevel); //очередная кнопка встает на найденный уровень, который заведомо выше всех
}
Лучше менять местами текущий мувик с наивысшим. А то так глубины могут закончится, если долго и упорно кликать.
udaaff, в моем примере не закончатся :)
Просто поочередно занимается один и тот же найденный свободный обособленный уровень, изначально не занятый.
не работает (
нужно ли в клипе main добавить еще один слой ?
все кнопки в клипе main лежат в одном фрейме на одном слое.
Добавлено через 1 минуту
Лучше менять местами текущий мувик с наивысшим. А то так глубины могут закончится, если долго и упорно кликать.
где должен находиться наивыший ? в руте ?
Должно работать. Никаких слоев не нужно добавлять. То, что происходит на _root, никакого отношения не имеет ни к чему, у вас же все в main - и кнопки, и уровень свободный находится и занимается.
Вероятно, что-то делаете не так. См. рабочий пример.
PS. Не путайте слои в среде разработки флеша и глубины объектов в готовом swf.
Должно работать. Никаких слоев не нужно добавлять. То, что происходит на _root, никакого отношения не имеет ни к чему, у вас же все в main - и кнопки, и уровень свободный находится и занимается.
Вероятно, что-то делаете не так. См. рабочий пример.
PS. Не путайте слои в среде разработки флеша и глубины объектов в готовом swf.
http://filestore.com.ua/?d=D3C87EB49
не могу понять что не так
возможно потому что в кнопках битмап и есть анимация
Не забывайте, что не у всех CS4 стоит.
Какая версия у вас ? Если сохранять через сайв эз то можно только CS3 (
MovieClip.swapDepths
Синтаксис
anyMovieClip.swapDepths(depth);
anyMovieClip.swapDepths(target);
Аргументы
target Мувиклип, который должен обменять уровень своего местонахождения с уровнем клипа, заданным в anyMovieClip. Оба мувиклипа должны принадлежать одному и тому же родительскому клипу (находиться на одной линейке Прим. редактора)
depth Номер уровня, на который будет перемещен anyMovieClip.
Описание
Метод; обменивает порядок расположения, или Z-порядок (уровень глубины) данного мувиклипа с клипом, указанным в аргументе target или с клипом, который в данный момент занимает уровень depth, заданный в аргументе. Оба мувиклипа должны принадлежать к одному и тому же родительскому клипу. Обмен уровнями создает эффект перемещения одного клипа за или под другой. Если в момент вызова этого метода мувиклип находится в состоянии анимации "tweening", последняя останавливается.
скорее всего проблема вот здесь.
Добавлено через 25 минут
вродь разобрался проблема в том что к типу "button" это свойство не работает (
Кнопки (Класс Button) не используйте - от них одна головная боль.
ну я уже это понял ) просто теперь прийдеться все кнопки переделать в мувиклип а потом их сделать с помощью - ас кнопками )
нашел тут пример как по мне не оч понятный )
http://demiart.ru/forum/index.php?showtopic=54011
кстати я так понял там где наш счечик отсчитывает кнопки можно вставить скрипт для того что бы каждый мувиклип превращался в кнопку (соответсвенно подготовив его - вставив 3 кадра), верно ?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.