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

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

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

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

Re: Уроки по флэш-программированию
« Ответ #390 : 18 Января 2011, 16:17:07 »
2 Хемуль:

Время во флэше можно отсчитывать по внутреннему счетчику: getTimer() (работает и в ас2, и в ас3 {только нужно подгрузить flash.utils.getTimer, если не изменяет память})

Это целое значение в миллисекундах - время, прошедшее с момента старта приложения.

(далее речь об ас2)

Также есть функция setInterval (functionName, ms_timer, [...parameters]), которая вызывает функцию "functionName" через каждые "ms_timer" миллисекунды.

Эта функция создает специальный ID (номер), по которому этот интервал можно будет удалить.

А удаляется интервал с помощью функции clearInterval(id).

Принцип такой в общем  :)

Цитата: код
var myID:Number;   //ид будущего интервала
button.onPress=function() {
   //<- тут создаем шарик   
   myID=setInterval (removeBall, 10000);
}

function removeBall () {
   //<- тут удаляем шарик
   clearInterval (myID);
}

2. Речь, я так понял, идет о клавише?

Цитата:
Key.addListener(this);
this.onKeyDown=function () {
  //действие
}

выполнится всего один раз)

P.S.: опередил, блин)

Добавлено через: 2 мин. 16 сек.
Цитата:
И может кто-нибудь сможет объяснить, как все таки убирать ненужные объекты с экрана. Команда removeMovieClip не помогает. Объект все равно остается на экране.

removeMovieClip работает "только" с приаттаченными клипами. Для того, чтобы убрать с экрана нужно перевести клип на глубину > 0. Так:

Цитата:
myClip.swapDepths(myClip._parent.getNextHighestDepth())
myClip.removeMovieClip()

Добавлено через: 2 мин. 22 сек.
Мерцание я делаю так:

Цитата:
clip.onEnterFrame = function () {
  this._alpha=75+25*Math.sin(getTimer()/1000);
}

где:

25 - амплитуда мерцания.
75 - среднее значение.
1000 - степень "замедления" мерцания. Чем число выше, тем мерцание будет медленнее

то есть, мерцание будет от 50 до 100
« Последнее редактирование: 18 Января 2011, 16:25:18 от Vetal1992 »

Оффлайн Хемуль Мужской

Re: Уроки по флэш-программированию
« Ответ #391 : 18 Января 2011, 16:46:05 »
Всем спасибо)) Прочитал, и понял, какой я еще нуб во всем этом :)
В коде
Цитата:
Key.addListener(this);
this.onKeyDown=function () {
  //действие
}
где указать саму кнопку?)

Добавлено через: 19 мин. 17 сек.
Убирание объекта помогло) Но вот теперь появилась проблема как его вернуть, что б он снова появился на следующем кадре?))) Грубо говоря, взял шарик (он исчез), перешел на следующий кадр и снова взял там шарик.

Добавлено через: 29 мин. 45 сек.
Эх. С клавишей что-то не то. Возможно это я, слишком коряво обрисовал ситуацию. Вобщем вот код: if (_root.lvl>1) {
if (Key.isDown(Key.UP)) {
_root.lvl -= 1;
}
}
if (_root.lvl<4) {
if (Key.isDown(Key.DOWN)) {
_root.lvl += 1;
}
}
Все работает отлично, но быстро. При нажатии на кнопку, скажем, вниз, значение lvl моментально пробегает с единицы до четверки. Приходится быстро тыкать клавишу, чтобы остановиться на двойке или тройке. Вот это я бы и хотел замедлить...
« Последнее редактирование: 18 Января 2011, 17:36:18 от Хемуль »

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

Re: Уроки по флэш-программированию
« Ответ #392 : 18 Января 2011, 17:39:52 »
Цитата:
Но вот теперь появилась проблема как его вернуть, что б он снова появился на следующем кадре?))) Грубо говоря, взял шарик (он исчез), перешел на следующий кадр и снова взял там шарик.
Лучше експортируй в ActionScript свой мяч (если в as2 так можно), создай переменную ball, в неё запихай свой шарик как-то так:
var Ball=new ball();
//ball - это твой шарик
и когда надо добавить пиши
attachMovie(Ball);
когда удалить -
removeMovieClip(Ball);
Приблизительно так, я просто на as3...

Re: Уроки по флэш-программированию
« Ответ #393 : 18 Января 2011, 18:17:27 »
Насчет клавиш, либо используй опять же таймер, либо может Веталь что дельное подскажет.

А насчет клипа, можно либо использовать свойство _alpha, либо если ты его удалил использовать attachMovie("имя в библиотеке","Имя на сцене",глубина);

Только если используешь attachMovie, то не забудь открыть библиотеку, нажать правой кнопкой на своем клипе и выбрать свойства(prefences). Там поставить галочку на export for action script и указать имя(именно по нему вызывается клип) в поле.

В принципе как и сказал Konan888.
« Последнее редактирование: 18 Января 2011, 18:19:07 от Elentarion »

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

Re: Уроки по флэш-программированию
« Ответ #394 : 18 Января 2011, 19:04:39 »
Elentarion, спасибо, что поправил на счёт attachMovie, просто с as2 не знаком... :)

Оффлайн Хемуль Мужской

Re: Уроки по флэш-программированию
« Ответ #395 : 18 Января 2011, 23:03:43 »
Ну, для меня пока это сложновато. Буду еще развиваться) Тем более, что сегодня в одном компьютерном магазине наткнулся на стендик с кучей книжек по  25 руб штука.  Покопавшись, наткнулся на Action Script 2.0 Программирование во Flash MX 2004 за авторством Дмитрия Гурского. Так что теперь доставать вопросами буду книжку :)

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

Re: Уроки по флэш-программированию
« Ответ #396 : 19 Января 2011, 08:58:02 »
Ахахах)) 25 руб.))

1. Сори, я забыл, что onKeyDown постоянно посылается... Попробуй так:

Цитата:
Key.addListener(this);
this.onKeyUp=function () {
  if(Key.getCode==Key.LEFT) {
        if(_root.lvl>1) _root.lvl --;
  }
  if(Key.getCode==Key.RIGHT) {
         if(_root.lvl<4) _root.lvl ++;
  }
}

2. Если ты закинул мяч в кадр, то он будет к кадру привязан.

Как уже здесь говорили, можно написать так:

Цитата:
_root.attachMovie("id в библиотеке", "название твоего клипа", _root.getNextHighestDepth() )

только немного по-другому. Так:

Цитата:
var ball:MovieClip = _root.attachMovie("ball", "ball", _root.getNextHighestDepth() )

//Когда нужно его убрать:
ball._visible=false

//Когда вернуть:
ball._visible=true

Re: Уроки по флэш-программированию
« Ответ #397 : 19 Января 2011, 13:42:15 »
привет давно за вами наблюдаю и всё таки решился зарегестрироваться,,,витал если можно в ученики запиши пожалуйста,,,И тут уменя сразу вопрос :D как обект можно заставить двигаться?и что б он умел прыгать :)

АлЛеГаТоР

  • Гость
Re: Уроки по флэш-программированию
« Ответ #398 : 19 Января 2011, 13:47:46 »
Я знаю способ:
скажи двигайся ничтожный объект иначе я тебя уничтожу!
и пнуть ногой

Re: Уроки по флэш-программированию
« Ответ #399 : 19 Января 2011, 14:24:46 »
 :biglol: :biglol: :biglol: :biglol:ну а если серьёзна?

Re: Уроки по флэш-программированию
« Ответ #400 : 19 Января 2011, 14:44:44 »
У объектов есть такие свойства, как положение по оси х (_х), и положение по оси у (_у).
Причем во флэш ось х направлена слева-направо, а ось у сверху-вниз.

Остальное дело математики, физики и логики. Допустим наш объект MovieClip с именем ball, то простейший код прыгающего объекта будет выглядить так:

this.onLoad = function(){
   ball._x = 200; //Устанавливаем начальные значения
   ball._y = 50;
   speed = 0; //Это начальная скорость
   speed_up = 1; //Ускорение
}
this.onEnterFrame = function(){
   speed =  speed+speed_up; // Вычисляем скорость(по физике текущая скорость+ускорение)
   ball._y += speed;//Сдвигаем наш мяч на расстояние равное скорости
   if(ball._y>300){ //Это у нас пол, если мяч ударился об пол.
      speed = -speed-1; //То отскакивает с такой же скоростью.(абсолютно упругий удар)
   }
}


Добавлено через: 3 мин. 21 сек.
В общем код основывается только на изменение координат. С изменением положения все аналогично.
« Последнее редактирование: 19 Января 2011, 14:50:00 от Elentarion »

Re: Уроки по флэш-программированию
« Ответ #401 : 19 Января 2011, 15:08:20 »
он ругаеться на код вот ошибка: appear within on/onClipEvent handler
     this.onEnterFrame = function(){

Total ActionScript Errors: 2     Reported Errors: 2



 :help: :help: :help: :help: :help: :help: :help: :help: :help: :help:

АлЛеГаТоР

  • Гость
Re: Уроки по флэш-программированию
« Ответ #402 : 19 Января 2011, 15:09:03 »
Мой способ проще и надежнее

Re: Уроки по флэш-программированию
« Ответ #403 : 19 Января 2011, 15:17:21 »
Цитата: АлЛеГаТоР от 19 Января 2011, 15:09:03
Мой способ проще и надежнее
мне нужен реальный способ!

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

Re: Уроки по флэш-программированию
« Ответ #404 : 19 Января 2011, 16:20:18 »
по ходу, ты в коде клипа код написал. Нужно в кадре

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