Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.01.2010, 18:19
boris1029 вне форума Посмотреть профиль Отправить личное сообщение для boris1029 Найти все сообщения от boris1029
  № 1  
Ответить с цитированием
boris1029

Регистрация: Dec 2009
Сообщений: 26
Question Не дублируется клип выстрела в игре.

У меня есть выстрел bullet. Если его не дублировать, то при воспроизведении его в тот момент, когда он УЖЕ запущен тот который запущен удаляется, а тот который при нажатии должен начаться начинается. Я дублировал этот клип, и теперь, по идее, он должен запускаться любое количество раз дублируясь.
Я применил вот этот код:
Код AS1/AS2:
bullet._visible = false;
Key.addListener(this);
onKeyDown = function () {
	if (Key.isDown(Key.SPACE)) {
		d = bullet.duplicateMovieClip("p" + i, i);
		d._x = bullet._x;
		d._y = bullet._y;
		d = true;
	}
};
Так вот, он не дублируется. Поправьте код пожалуйста.

Старый 23.01.2010, 18:25
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код рабочий. Проверьте в новом проекте.
Единственное, что вызывает недоумение, вот эта строка:
Код AS1/AS2:
d = true ;
Тут вы приравниваете объект типа MovieClip булевому значению. Это как понимать?
Понятно, что если мувик существует, он тру, компилятор это переварит, но смысла это не несет.
Можно так:
Код AS1/AS2:
d.testvar = true ;
И вот эти строки избыточны, так как дубль всегда появляется в тех же координатах, что и оригинал, если не принять спец. мер:
Код AS1/AS2:
d._x = bullet._x ;
d._y = bullet._y ;
По существу. Если ваша проблема состоит в том, что удаляется предыдущий дубль, то у вас просто дубли возникают на одной и той же глубине, вам надо делать i возрастающей от выстрела к выстрелу.
Код AS1/AS2:
bullet._visible = false ;
Key.addListener(this);
var i:Number = 0;
onKeyDown = function () {
	if (Key.isDown(Key.SPACE)) {
		i++;
		d = bullet.duplicateMovieClip('p' + i, i);
 
	}
};
Добавлено через 22 минуты
Вот вам решение:
Вам надо ввести условие. На последнем кадре анимированного мувика запишите.
Код AS1/AS2:
stop();
this._visible = false;
_parent.doAllowShot();
И основной код будет таким:
Код AS1/AS2:
bullet._visible = false ;
bullet.stop(); //оригинал нужно остановить, чтобы он хоть невидим, но не проигрался также
var allowShot:Boolean = true ;
var i:Number = 0;
Key.addListener(this);
 
onKeyDown = function () {
	if (Key.isDown(Key.SPACE) && allowShot) {
		allowShot = false ;
		i++;
		d = bullet.duplicateMovieClip("p" + i, i);
	}
};
 
function doAllowShot () {
	allowShot = true ;
}
Вообще лучше это организовать не дублированием, а аттачем из библиотеки, чтобы не загромождать сцену и не писать лишнего кода остановки оригинала.


Последний раз редактировалось mooncar; 23.01.2010 в 19:25.
Старый 23.01.2010, 20:22
boris1029 вне форума Посмотреть профиль Отправить личное сообщение для boris1029 Найти все сообщения от boris1029
  № 3  
Ответить с цитированием
boris1029

Регистрация: Dec 2009
Сообщений: 26
спасибо.

Создать новую тему Ответ Часовой пояс GMT +4, время: 04:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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