PDA

Просмотр полной версии : обратная анимация с кнопкой


Rot pfeffer
11.10.2006, 22:56
Привет всем, помогите пожалуйста, не пойму что я не так делаю...сделал флешку, есть 2 кнопки и 2 мувика на 4х слоях, при помещении курсора на кнопку,анимация первого мувика должна проигрываиться, а при уводе плавно переходить на начало... на первой кнопке все работает а вот на второй нет, как сделать чтоб на второй работала разобраться не могу...

Rot pfeffer
11.10.2006, 22:58
вот пример мой

Rot pfeffer
12.10.2006, 00:04
Народ, поможет кто нить нет?...очень надо

Neosano
12.10.2006, 00:16
вот, чтож сложного?

Rot pfeffer
12.10.2006, 00:27
Neosano
спасибо...туплю уже, 3 дня по 15 часов у компа, столько форумов перелопатил, глаза болят...вообщем бошка совсем не варит...преогромное спасибо

Хемуль
12.10.2006, 00:42
2 Rot pfeffer:
Предлагаю более совершенный и облагороженный пример. Можно ставить сколько угодно кнопок и мувиклипов. В моём примере их 4. Обратите внимание на то, как упростилось всё на сцене. Причём я даю вам гибкий в настройке код. Полагайтесь больше на скрипты...
Код:

var moviesNumber:Number = 4;
var left:Number = 20;
var top:Number = 20;
var moviesInterval:Number = 30;
var buttonsYOffset:Number = 120;
var movieBaseName:String = "movie";
var buttonBaseName:String = "button";

var moviesXOffset:Number = 0;
for (var index:Number = 0; index < moviesNumber; index++)
{
var newMovieName:String = movieBaseName + index;
var newButtonName:String = buttonBaseName + index;
var newMovie:MovieClip = this.attachMovie("myMovie", newMovieName, this.getNextHighestDepth());
var newButton:MovieClip = this.attachMovie("myButton", newButtonName, this.getNextHighestDepth());
newMovie.white.gotoAndStop(1);
newMovie._x = left + moviesXOffset;
newMovie._y = top;
newButton._x = newMovie._x;
newButton._y = top + buttonsYOffset;
newButton.id = index;
newButton.onRollOver = function()
{
var movieClipName:String = movieBaseName + this.id;
var whiteThing:MovieClip = this._parent[movieClipName].white;
delete whiteThing.onEnterFrame;
whiteThing.gotoAndPlay(1);
};
newButton.onRollOut = function()
{
var movieClipName:String = movieBaseName + this.id;
var whiteThing:MovieClip = this._parent[movieClipName].white;
whiteThing.onEnterFrame = function()
{
if (this._currentframe > 1)
{
this.prevFrame();
}
else
{
delete this.onEnterFrame;
}
};
};
moviesXOffset += (newMovie._width + moviesInterval);
}

Обратите внимание на то, как теперь устроены ваши мувиклипы. И не стоит использовать кнопки...
Исходник прикрепляю...

Rot pfeffer
12.10.2006, 01:28
Хемуль
спасибо огромное за старания. правда в коде мне тяжеловато разобраться, я тот переделал на 4 кнопки...надосуге ваш разберу, что к чему, =) еще раз спасибо

D12
12.10.2006, 01:39
2Хемуль и это облагороженный вариант ? помоему это третий думм судя по коду ...


Так же проще ...

_root.freme = 1;//счетчик кадров изночально на первом кадре
_root.GO = 0;//переменная проверяющая в какую сторону проигрывать аниацию
this.onEnterFrame = function() {
if (_root.GO == 0 && _root.freme>1) {
_root.freme -= 1;
}
if (_root.GO == 1 && _root.freme<mc._totalframes) {
_root.freme += 1;
}
this.mc.gotoAndStop(_root.freme);
};
////////////////////////////////////
this.button.onRollOut = function() {
_root.GO = 0;
};
this.button.onRollOver = function() {
_root.GO = 1;
};


где "mc" ролик который должен проигрыватся
"button" кнопка отвечающая за проигрывания ролика

Хемуль
12.10.2006, 02:03
2 D12:
Не путайте грешное с праведным. Мой пример рассчитан на произвольное количество мувиклипов и кнопок, ваш же работает только для одного мувиклипа и одной кнопки. Вы же не забыли, что у нас 2 кнопки? В моём примере кнопки и мувиклипы вытягиваются на сцену динамически, у вас предполагается их наличие с соответствующими именами на сцене для корректной работы кода.
Вы будто показываете мне гайку, а потом указываете мне на мой автомобиль и говорите: "Зачем же так сложно?" ^_^

D12
12.10.2006, 02:15
Вы же не забыли, что у нас 2 кнопки? В моём примере кнопки и мувиклипы вытягиваются на сцену динамически, у вас предполагается их наличие с соответствующими именами на сцене для корректной работы кода.
Вы будто показываете мне гайку, а потом указываете мне на мой автомобиль и говорите: "Зачем же так сложно?" ^_^

Увы буду "for" никто неотменял ... и вы имея достаточный опыт должны это знать .

P.S. Каждый раз когда я вижу такие грамоздкие никчемные коды мне вспоминается один рисунок который вроде как карикатура , стоят двое ученых у доски , доска вся мелом формулами измалеванноя , и один другому на полном серьезе говорит -Народ нас непонимает-
Мораль : Орентируй свою работу на заинтересованную аудиторию , а городить " квадратуру круга " этим батенька в мемуарах займемся .

P.S.2 Прошу прощения за грубость , увы такова природа ,я на стороне новичков .

Хемуль
12.10.2006, 02:33
2 D12:
Так в том-то и дело, что for никто не отменял. Но у вас в коде его нет. Но вы всё же сравниваете величину своего кода с величиной моего... Давайте смотреть правде в глаза... Без for'а ваш код не выполнял поставленной задачи, а именно - реализации ДВУХ кнопок и ДВУХ мувиклипов. Поставьте for и код уже увеличится...
Что же касается заинтересованной аудитории, то вы сами прекрасно знаете, что аудитория до сих пор пользуется tellTarget'ом и setProperty. Не думаю, что мой код как-то исковеркает их разум. При том это форум. Пусть задают вопросы - я на все отвечу, которые будут касаться моего кода. Если захотят, расставлю комментарии над каждой строчкой. Вы поймите также, что у многих есть ужасный синдром "зазубривания". Ну напишите вы им код из трёх строчек. Ну они его применят, получат то, что нужно, но они не поймут того, что сделали. И потом опять будут приходить на форум с теми же вопросами. Я же предлагаю код гибкий для настройки.

PS:
Я сам новичёк.

SPITFIRE
12.10.2006, 03:08
2 D12:
Верно, нафиг мутить ту фигню, с добавлением кнопок, если она нах не нада вообще. Но знать как написать такой код надо.:)

Хемуль
12.10.2006, 10:37
2 SPITFIRE:
Это не "фигня". Это вариант решения проблемы с динамической генерацией, который подходит для любых случаев. Если вы не понимаете, что там происходит, то вы спросите. ActionScript-код не становится "фигнёй", если вы не понимаете, что он делает.

miramax
12.10.2006, 11:45
Я сам новичёкСудя по количеству мессаг ты уже давно не новичёк :away: 2 SPITFIRE:
Это не "фигня". Это вариант решения проблемы с динамической генерацией, который подходит для любых случаев. Если вы не понимаете, что там происходит, то вы спросите. ActionScript-код не становится "фигнёй", если вы не понимаете, что он делает.
А твои примеры, очень часто, являются лишними. Новички их боятся и задают миллион вопросов, на которые ты со смаком, развёрнуто отвечаешь...
ты делаешь 2 ошибки
1. Даёшь новичкам готовый код. А этого делать просто нельзя.
2. Путаешь новичков своим кодом. Когда я начинал , мне были отвратительны развёрнутые примеры, я их терпеть не мог. Мне нужны были алгоритмы и общие решения. Вот именно общие решения, не готовое решение, а общая мысль нужна новичку. Новичёк хочет сам думать, ему гораздо важнее ответ на конкретный вопрос. Лично меня раздражают долгие примеры, в которых суть зарыта в сотне строчек кода. Большинство людей (я тоже) думают так "Я САМ ЗНАЛ, ЗНАЮ и БУДУ ЗНАТЬ как мне применить ту или иную функцию, и не нужно вешать на неё всё что взбредёт в голову. Мне нужен основной смысл".
Новичка нужно научить рассуждать, нужно научить думать, нужно что бы он сам понял как гибко и как круто он может использовать ту или иную часть кода.
Каждый раз заходя на форум, я вижу в тредах last reply Хемуль, Хемуль, Хемуль, Хемуль..... И я уже знаю что там будет, там будут тонны кода,с лишними наворотами, с наворотами которые не нужны новичкам, в которых я не буду разбираться. С наворотами, которые новички сами навертят если поймут код. В этом коде я не буду разбираться , не потому что не понимаю АС, а потому что там написано слишком много, слишком много времени на это уйдёт.
И твоя "динамическая генерация" , "для любых случаев" нахрен никому не нужна. Нужна идея. А теперь обрежь все свои коды, оставь самое основное, самый короткий ответ на вопрос новичка. И встречных вопросов у новичков станет в два раза меньше.

Хемуль
12.10.2006, 12:34
2 miramax:
Неправда это... Они не задают вопросы... И я писал выше, что отвечу на каждый, если они будут. Но их просто нет... Так что не надо рассказывать мне сказки про "миллион вопросов". Есть только один новичёк, который задавал мне последовтельные вопросы - Makak.
К тому же, уважаемый miramax, вы прежде чем писать мне всё это, поискали бы в темах подфорума недовольные сообщения новичков по поводу того, что у меня слишком сложный код. Пока что никто вроде не жаловался... ^_^ А если вам были отвратительны развёрнутые примеры, когда вы начинали, то почему это должно относиться ко всем? Давайте, может, предоставим пользователям самим решать, что им отвратительно, а что - нет? о_0

Всё, хватит разводить флейм, товарищи. Каждый пишет так, как хочет и помагает в меру своих возможностей. Я - так, вы - иначе. Благо, правилами форума стиль написания кода не регулируется. Значит будем писать новичкам несколько примеров. Вы - короткие, я - развёрнутые. Думаю, от этого информационная эффективность форума только повысится. А флейм пора прекращать. iNils'у это не понравится.

iNils
12.10.2006, 17:22
Значит будем писать новичкам несколько примеров. Вы - короткие, я - развёрнутые. Думаю, от этого информационная эффективность форума только повысится.Именно так и должно быть :)

Rot pfeffer
12.10.2006, 21:40
Фига себе баталии развели...спасибо всем, ребята, кто мне ответил, разнообразие выбора это хорошо...правда я воспользовался первым ответом, где мой пример, который я оставил, доработали...
Хемуль ваш код конечно хороший, но честно говоря новичков и вправду пугает такой большой код...хотя я не то что боюсь разбираться, просто на данный момент нет времени что бы разбираться в нем, т к есть уже другой...