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

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

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

Регистрация: Jul 2015
Сообщений: 73
По умолчанию ошибка при само-удалении объекта

на сцене мувик "sdsd"
вот при таком коде
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
 
	public class sdsd extends MovieClip {
 
 
		public function sdsd() {
 
				parent.removeChild(this);
 
		}
	}
 
}
удаляет там себя, но как только удаляю так
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
 
	public class sdsd extends MovieClip {
 
 
		public function sdsd() {
			var tom:Timer = new Timer(100,1);
			tom.start()
			tom.addEventListener(TimerEvent.TIMER,go);
			function go(event:TimerEvent):void
			{
 
 
				parent.removeChild(this) as DisplayObject;
			}
		}
	}
 
}
выдает ошибку
TypeError: Error #1034: Type Coercion failed: cannot convert global to flash.display.DisplayObject.
кто нибудь сталкивался с таким? в чем проблема?

Старый 22.10.2015, 21:16
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Во втором варианте this имеет совсем другое значение, потому слушатель анонимный. Сделайте слушатель методом класса, и все будет норм.

Старый 22.10.2015, 21:21
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 3  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
может надо в функции обработчике таймера писать не this, а переменную, до этого определнную в конструкторе var mk: MovieClip =this...

Старый 22.10.2015, 21:25
tattori вне форума Посмотреть профиль Отправить личное сообщение для tattori Найти все сообщения от tattori
  № 4  
Ответить с цитированием
tattori

Регистрация: Jul 2015
Сообщений: 73
извиняюсь код чуток не тот код прислал
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
 
	public class sdsd extends MovieClip {
 
 
		public function sdsd() {
			var tom:Timer = new Timer(100,1);
			tom.start()
			tom.addEventListener(TimerEvent.TIMER,go);
			function go(event:TimerEvent):void
			{
 
 
				parent.removeChild(this);
			}
		}
	}
 
}
вот так
alexandrratush примером кода если можно, че то не совсем догнал

Добавлено через 18 минут
ааааааааа всеее, че то это я туплю все очень даже классно объяснил)) спасибо))

Старый 23.10.2015, 08:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от tattori Посмотреть сообщение
на сцене мувик "sdsd"
вот при таком коде
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
 
	public class sdsd extends MovieClip {
 
 
		public function sdsd() {
 
				parent.removeChild(this);
 
		}
	}
 
}
удаляет там себя, но как только удаляю так
Да не может он таким кодом сам себя удалять никак.
sdsd в данном случае является конструтором. То есть на момент создания экземпляра, у него никак не может быть родителя. И этот код кинет ошибку сразу же при запуске.

Старый 24.10.2015, 18:56
tattori вне форума Посмотреть профиль Отправить личное сообщение для tattori Найти все сообщения от tattori
  № 6  
Ответить с цитированием
tattori

Регистрация: Jul 2015
Сообщений: 73
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Да не может он таким кодом сам себя удалять никак.
sdsd в данном случае является конструтором. То есть на момент создания экземпляра, у него никак не может быть родителя. И этот код кинет ошибку сразу же при запуске.
мувик вручную выставлен на сцену, удаляет

Старый 26.10.2015, 13:15
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 7  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
тут вот товарищ выше ответил уже: "Во втором варианте this имеет совсем другое значение, потому слушатель анонимный. Сделайте слушатель методом класса, и все будет норм."

Т.е. - this внутри АНОНИМНОЙ функции уже не ссылается на экземпляр класса. Если использовать анонимную функцию, как в вашем коде, то ей надо в явном виде передать ссылку на класс.

Код AS3:
public class sdsd extends MovieClip {
 
 
		public function sdsd() {
			var tom:Timer = new Timer(100,1);
			tom.start()
			tom.addEventListener(TimerEvent.TIMER,go);
 
                        var itsMe:sdsd = this;
 
			function go(event:TimerEvent):void
			{
 
                                trace(itsMe)
                                trace(this)
				//parent.removeChild(this);
                                parent.removeChild(itsMe)
			}
		}
	}

Старый 26.10.2015, 16:13
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 8  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
еще бы таймер остановить..
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 29.10.2015, 22:32
tattori вне форума Посмотреть профиль Отправить личное сообщение для tattori Найти все сообщения от tattori
  № 9  
Ответить с цитированием
tattori

Регистрация: Jul 2015
Сообщений: 73
meiciuc спасибо за пример , да товарищ все классно объяснил.

Добавлено через 47 секунд
cleptoman у таймера выставлен один цикл, он сам остановится

Старый 30.10.2015, 00:34
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 10  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Оффтоп: я там забыл одно слово вставить, из-за этого предложение глупо звучит. Вот так лучше:
Во втором варианте this имеет совсем другое значение, потому что слушатель анонимный. Сделайте слушатель методом класса, и все будет норм.

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

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

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


 


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


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