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

Rot pfeffer 11.10.2006 22:56

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

Rot pfeffer 11.10.2006 22:58

Вложений: 1
вот пример мой

Rot pfeffer 12.10.2006 00:04

Народ, поможет кто нить нет?...очень надо

Neosano 12.10.2006 00:16

Вложений: 1
вот, чтож сложного?

Rot pfeffer 12.10.2006 00:27

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

Хемуль 12.10.2006 00:42

Вложений: 1
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

Вложений: 1
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

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


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

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