НОВЫЕ ИГРЫЛУЧШИЕ ИГРЫФОРУМ 249 Всего сообщений: 305037
+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Уроки по флэш-программированию

Автор Тема: Уроки по флэш-программированию  (Прочитано 429536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Simuran Мужской

Re: Уроки по флэш-программированию
« Ответ #585 : 01 Июня 2011, 16:59:03 »
мне нужней ас3.  а каково отличие CS4 от СS5? сильно ли они принципиальны?
ас3 я так понимаю там тот же. Просто появилась возможность 5ый поставить.

и да, я вот заморачивался созданием элементарной менюшки, вернее если можно это так назвать. Мне нужно было чтобы путем переключения кнопочками обьекты листались влево/право. собственно я получил что хотел. Но есть 1 момент, по скольку я делал это путем команд nextFrame/prevFrame это дело работало путем переключения кадров и добравшись до последнего кадра приходилось возвращаться используя кнопку "назад".
А как сделать так, чтобы перелистывание было неприрывным? тоесть с последнего кадра можно было вернуться на первый, словом можно было двигаться по кругу? Надеюсь я понятно обьяснил)

Оффлайн Konan888 Мужской

Re: Уроки по флэш-программированию
« Ответ #586 : 01 Июня 2011, 18:07:24 »
ну, cs5 от cs4 почти ничем не отличается кроме как быстрее работает, меньше багов и всё меньше весит.
P.S.  у меня была простенькая игрушка, едет паравоз, уварачивается от деревьев и собирает фрукты так swf, скомпиленая в cs4 весила 16 метров)) а в cs5 0,3 метра))

Лучше сделай банальную проверку
if(this.currentFrame>=this.totalFrames){
this.gotoAndStop(1);
}

Оффлайн Simuran Мужской

Re: Уроки по флэш-программированию
« Ответ #587 : 01 Июня 2011, 18:15:05 »
хорошо, попробую, спасибо

Оффлайн Vetal1992 Мужской

Re: Уроки по флэш-программированию
« Ответ #588 : 01 Июня 2011, 19:57:33 »
Simuran, вот код верняк:

вместо this.nextFrame();

Цитата: Код ActionScript 3.0
this.gotoAndStop(this.currentFrame%this.totalFrames+1)

если код не внутри мувиклипа - вместо this нужно поставить ссылку на него



Цитата: Код ActionScript 3.0
if(this.currentFrame>=this.totalFrames){
this.gotoAndStop(1);
}

как это может работать, если currentFrame никогда не бывает больше totalFrames?
А если равно - просто будет пропускаться последний кадр
« Последнее редактирование: 01 Июня 2011, 22:10:48 от Vetal1992 »

Re: Уроки по флэш-программированию
« Ответ #589 : 01 Июня 2011, 20:32:18 »
Вы хоть язык указывайте. =)
Если что, все это написано для третьего.

Цитата:
this.gotoAndStop(this.currentFrame%this.totalFrames+1)
Хм... количество текущих кадров никогда не будет превышать количество максимальных. И вообще откуда эта цитата? :huh:

Для второго перед currentFrame и totalFrame поставить _

Вообще, если меню - листалка, то значит листает пользователь событиями, тогда подойдет равенство.
if(this.currentFrame>=this.totalFrames){ //Код выполнится только после вызова обработчика
}
« Последнее редактирование: 01 Июня 2011, 20:38:19 от Elentarion »

Оффлайн Konan888 Мужской

Re: Уроки по флэш-программированию
« Ответ #590 : 01 Июня 2011, 20:35:12 »
Цитата:
как это может работать, если currentFrame никогда не бывает больше totalFrames?
А если равно - просто будет пропускаться последний кадр
ну да, не бывает, это я так.. привык писать учитывая все возмажные баги))
Почему будет пропускаться последний кадр? Это ж я не весь код написал, можно, например, дописать else
if(this.currentFrame>=this.totalFrames){
this.gotoAndStop(1);
}
else{
this.nextFrame();
}

Оффлайн Vetal1992 Мужской

Re: Уроки по флэш-программированию
« Ответ #591 : 01 Июня 2011, 22:10:27 »
Ну смотри, как только этот код будет выполняться на последнем кадре - выполнится равенство "этот кадр равен последнему кадру", и сразу же перебросит на 1-й

Да, впредь буду писать версию ас)))

Цитата:
Хм... количество текущих кадров никогда не будет превышать количество максимальных. И вообще откуда эта цитата?

Это из кода currentFrame>=totalFrames

Добавлено через: 22 мин. 5 сек.
Цитата:
//Код выполнится только после вызова обработчика

В таком случае одинаково

Добавлено через: 2 мин. 5 сек.
Хотя да, в любом случае одинаково)) я затупил))

Но все равно, одной строчкой проще
« Последнее редактирование: 01 Июня 2011, 22:34:37 от Vetal1992 »

Оффлайн Konan888 Мужской

Re: Уроки по флэш-программированию
« Ответ #592 : 01 Июня 2011, 22:37:04 »
ну так этот код не будет же выполнятся всегда, а только тогда, когда нажата кнопка. Допустим у нас всего 10 кадров. Сейчас показывается 9ый. Нажали кнопку. 9 не равно 10, тогда nextFrame, то есть 10. посмотрели 10ый кадр. Нажали кнопку. сейчас 10ый кадр, 10 = 10, значит переходим на 1ый. всё

Оффлайн Simuran Мужской

Re: Уроки по флэш-программированию
« Ответ #593 : 02 Июня 2011, 10:27:51 »
Работает!) примного благодарен)

Re: Уроки по флэш-программированию
« Ответ #594 : 07 Июня 2011, 10:22:27 »
Веталь, поскажи! Требуется обнулить переменную kol, но только один раз. Если делать в обработчике события, то количество не накапливается. А если не обнулять, то в переменную не записывается 1.
Нужно подсчитать количество (24) и выполнить переход на следующий кадр.
onClipEvent (enterFrame) {
kol=0;
}
onClipEvent(mouseDown) {
   // get mouse location
   mx = _root._xmouse;
   my = _root._ymouse;

   // loop through pieces looking for hit
   for(x=0;x<6;x++) {
      for(y=0;y<4;y++) {
         piece = _root["a"+x+"_"+y];

         // see whether the piece is under the cursor
         // and if it has not yet been placed
         if (piece.hitTest(mx,my) and (piece._alpha < 100)) {
            // this is the piece clicked
            piece.startDrag();

            // break out of all loops
            x = 6;
            y = 4;
            break;
         }
      }
   }
}

onClipEvent(mouseUp) {
   // stop piece from moving
   stopDrag();

   // get distance from center of piece
   // to center of outline

   dx = _root.outline._x - piece._x;
   dy = _root.outline._y - piece._y;
   dist = Math.sqrt(dx*dx+dy*dy);

   // if close enough, then set it in place
   if (dist < 10 ) {
      piece._x = _root.outline._x;
      piece._y = _root.outline._y;
       
      kol++;
      if (kol == 24) { 
        _root.gotoAndStop(10);
      }
      trace(kol);
      
      // set to full color
      piece._alpha = 100;
      
   }
}

Оффлайн Konan888 Мужской

Re: Уроки по флэш-программированию
« Ответ #595 : 07 Июня 2011, 11:48:16 »
 :)
Ну у тебя же написано:
onClipEvent (enterFrame) {
kol=0;
}
то есть kol=0; будет выполнятся каждый кадр.
хз можно ли просто писать kol=0; в as2, наверное можно. Короче напиши просто kol=0;
Или 2ой вариант:
когда ты увеличиваешь переменну kol, то проверяй не равна ли она NaN(или null, хз):
if(kol != NaN(или null, хз)){
kol++;
}

Тока можно сделать всё вообще проще) Я чё-то не вижу где тут у тебя объявляется переменная kol О_о
Ну, короче найди у себя строку типа такой:
var kol:Number;
и просто допиши:
var kol:Numbar = 0;
И тогда никаких проверок не надо и никаких обработчиков :)

Re: Уроки по флэш-программированию
« Ответ #596 : 07 Июня 2011, 14:23:00 »
Цитата: Konan888 от 07 Июня 2011, 11:48:16
:)
Ну у тебя же написано:
onClipEvent (enterFrame) {
kol=0;
}
то есть kol=0; будет выполнятся каждый кадр.
Да, а мне нужно накапливать. Весь скрипт у меня в клипе. Как объявить эту переменную в обработчике событий или в кадре, чтобы она была доступна в клипе? Если ее не обнулять то вместо 1 в нее помещается NAN

Цитата: Konan888 от 07 Июня 2011, 11:48:16
хз можно ли просто писать kol=0; в as2, наверное можно. Короче напиши просто kol=0;
Можно, в данном варианте у меня каждый раз выводится 1.
Цитата: Konan888 от 07 Июня 2011, 11:48:16
просто допиши:
var kol:Numbar = 0;
Этой строки у меня нет и я не знаю куда ее написать в обработчике событий. Уже все перепробовала и в кадр писала. Из кадра в клип не передается значение....А в таком варианте каждый раз обнуляется....
« Последнее редактирование: 07 Июня 2011, 14:32:04 от stepanenkoo »

Re: Уроки по флэш-программированию
« Ответ #597 : 07 Июня 2011, 15:24:01 »
Konan888
В АС 2.0 необязательно "официально" объявлять переменную, что бы ее использовать. При простом упоминание она создается автоматом. Поэтому отсутствует слово var. А еще можно писать в самих клипах, что обычно делать не надо, но тут сделано. И вне обработчиков писать ничего в них нельзя. Оо...

stepanenkoo
Я конечно не Виталий, но это можно сделать так:
onClipEvent (load){ //Это, обычно, если много переменных надо
   col = 0;
}

Или же проверкой в самом скрипте, если переменная не объявлена:
if(col==undefined) col=0;

 
« Последнее редактирование: 07 Июня 2011, 15:32:05 от Elentarion »

Оффлайн Simuran Мужской

Re: Уроки по флэш-программированию
« Ответ #598 : 07 Июня 2011, 15:41:29 »
Доброго времени суток! Ребят, есть такой вопрос.  Возможно ли импортирование уже готовых обьектов во флэш, допкстим уже нарисованных и проанимированных кнопок. Скажем, в ситуации когда 2 человека разрабатывают приложение на разных машинах. Если да, то как это будет выглядеть?

Добавлено через: 41 сек.
Работаем на CS5

Re: Уроки по флэш-программированию
« Ответ #599 : 07 Июня 2011, 15:55:15 »
1) Есть специальные системы по взаимодействию, но я с ними не работал ни разу. Просто знаю, что есть.
2) Берешь чужой исходник и перетаскиваешь(копируешь) символы из чужой библиотеки в свою.
« Последнее редактирование: 07 Июня 2011, 16:01:50 от Elentarion »

+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Уроки по флэш-программированию