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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.11.2007, 21:52
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 1  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
По умолчанию Создание маски

Доброго времени суток. Пытаюсь сделать так, чтобы каждый экземпляр классов, наследуемых от класса "Frame", появлялся на свет божий внутри родительского спрайта и обладал методом addMask(), создающим маскирующий спрайт заданных размеров. Подскажите пожалуйста, где ошибка в коде:

Код:
package {
import flash.display.Sprite;
import flash.display.Shape;
	public class Frame extends Sprite {
		public function Frame(){
			var p:Sprite=new Sprite();
			p.name="Container";
			p.addChild(this);
			trace (parent.name);		//Container
		}

		protected function addMask(w:uint, h:uint):void{
			trace(parent.name);				//Container
			var s:Shape=new Shape();
			with(s.graphics){
				beginFill(0x0000FF);
				drawRect(0,0,w,h);
				endFill();
			}
			parent.addChild(s);			//на экране ничего не отображается
			//mask=s;
		}
	}
}
Код:
package{
import flash.display.Sprite
import flash.events.MouseEvent
	public class D extends Frame {
		public function D(){
			trace(parent.name);			//Container
			with(graphics){
				beginFill(0xFF0000,0.4);
				drawRect(0,0,150,200);
				endFill();
			}
			addMask(50,50);

		}
	}
}
__________________
А я Томат.


Последний раз редактировалось Torero; 28.11.2007 в 21:56.
Старый 28.11.2007, 23:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Зачем создавать спрайт, вкладывать себя в него, но не добавлять на сцену получившийся симбиоз?

Старый 29.11.2007, 00:05
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 3  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
1.Зачем создавать:
В этот(родительский) спрайт буду добавлять маску, рамку, скролл и еще всякие разные штуки.
2.А как его добавить?
пытаюсь: "stage.addChild(p);" - ругается
подозреваю, что проблема в: "If a display object is not added to the display list, its stage property is set to null."
-----------------------------------------
в принципе, в том-то и вопрос: как сделать, чтобы экземпляры наследуемых классов создавались вместе с родительскими спрайтами, в которые, по мере надобности, можно подгружать что-то еще..
__________________
А я Томат.


Последний раз редактировалось Torero; 29.11.2007 в 00:08.
Старый 29.11.2007, 00:20
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 4  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
где у тебя стоит "stage.addChild(p);" ?

Старый 29.11.2007, 12:14
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 5  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
В конструкторе класса Frame.
__________________
А я Томат.

Старый 29.11.2007, 13:02
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 6  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Цитата:
Сообщение от Torero
В конструкторе класса Frame.
В конструкторе пишы:
Код:
this.addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
Потом добавь в класс обработчик:
Код:
private function onAddToStage(event:Event):void
{
	var p:Sprite=new Sprite();
	p.name="Container";
	p.addChild(this);
}

Старый 29.11.2007, 13:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
В конструкторе stage всегда неопределен.

Старый 29.11.2007, 14:34
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 8  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Разобрался. Большое спасибо.

Объясните пжл 1 вещь: почему объект stage не является глобальным? Господа из макромедии считают, что у разных объектов могут быть разные stage или как?
__________________
А я Томат.

Старый 29.11.2007, 16:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
У объектов, которые находятся в памяти, а не на сцене, не может быть никакого stage.

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

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

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


 


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


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