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

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

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

Регистрация: Jun 2006
Сообщений: 60
По умолчанию Работа с clearInterval

Здравствуйте!
Имея опыт задавания здесь вопросов, стал делать макет проблемы. И что самое интересное, макет работает, а в причине я и не разобрался.
Изначальный код (извините сто с кирилицей):
Код:
//Класс_бомб.as
class Класс_бомб extends MovieClip{
	private var _чья_бомба:Number
	private var _интервал_взрыва:Number;
	private var _интервал_качения:Number;
	private var _куда_двигаться:String
	static var ссылка_на_поле_битвы:Object = undefined;
	
	public static function инициализация_поля(ссылка) {
		ссылка_на_поле_битвы = ссылка;
	}
	public function _взрываемся() {
		
		_root._массив_данных_о_персонажах[this._чья_бомба][16]--
		ссылка_на_поле_битвы._установка_на_поле(this._x,this._y,"пусто")
		ссылка_на_поле_битвы._взрыв(this._x,this._y,_root._массив_данных_о_персонажах[_чья_бомба][17])
		
		removeMovieClip(this);	
	}
	public function _побуждение_к_движению(_куда:String) {
		this._куда_двигаться=_куда
		_интервал_качения=setInterval(this,"_двигаемся",2*10);
	}
	public function _побуждение_к_остановке() {
		this._куда_двигаться=''
		clearInterval(_интервал_качения);
		trace(getTimer())
	}
	public function _двигаемся() {
		switch(this._куда_двигаться){
			case 'полночь':
				
				if(ссылка_на_поле_битвы._возможность_катить_бомбу(this._x,(this._y-42),this)){
					if(ссылка_на_поле_битвы._дашь_координаты_y_округлю_и_верну(this._y)!=ссылка_на_поле_битвы._дашь_координаты_y_округлю_и_верну(this._y-2)){
						trace(this._name)
						this._name="_бомба_"+[ссылка_на_поле_битвы._дашь_координаты_y_верну_строку(this._y-2)]+"_"+[ссылка_на_поле_битвы._дашь_координаты_x_верну_столбец(this._x)]
						trace(this._name)
					}
					this._y-=2
					
				} else {
					trace('побуждение_к_остановке 42')
					this._побуждение_к_остановке()
				}
			break;
			default: 
				this._побуждение_к_остановке()
				trace('побуждение_к_остановке 48')
			break;
		}
	}
	public function Класс_бомб() {
		Персонаж.инициализация_бомб(this);
		if(_root._массив_данных_о_персонажах[this._чья_бомба][18]){	//если взрыв по времени
			_интервал_взрыва=setInterval(this,"_взрываемся", _root._массив_данных_о_персонажах[this._чья_бомба][14]*1000);
		} else {
			
		}
	}
	
}
В нем не срабатывает clearInterval.

А вот рабочий макет, в нем всё срабатывает
Код:
//C_class.as
class C_class extends MovieClip{
	private var intervalId1:Number;
	private var intervalId2:Number;

	public function _del() {
		removeMovieClip(this);	
	}
	public function _go_mo() {
		intervalId2=setInterval(this, "_mo",20);
	}
	public function _sto() {
		clearInterval(intervalId2);
		trace(getTimer())
	}
	public function _mo() {
		if(this._y>50){
			this._y-=2
		}else{
			this._sto()
		}
	}
	public function C_class() {
		intervalId1=setInterval(this, "_del", 2000);
		this._go_mo()
	}
	
}
Код:
//my_fla.fla
Object.registerClass('_symbol',C_class)
attachMovie('_symbol','_symbol',1,{_x:100, _y:100})
Подскажите в чем моя ошибка.
__________________
kto™


Последний раз редактировалось ktotam; 15.09.2008 в 17:24.
Старый 15.09.2008, 19:03
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Перед вызовом нового интервала, надо убить сначала старый.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 15.09.2008, 19:17
ktotam вне форума Посмотреть профиль Отправить личное сообщение для ktotam Найти все сообщения от ktotam
  № 3  
Ответить с цитированием
ktotam
 
Аватар для ktotam

Регистрация: Jun 2006
Сообщений: 60
Огромное спасибо!
Долго капался, увидел что меняется значение интервала, и тут еще ваша подсказка.
__________________
kto™

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

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

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


 


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


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