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

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

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

Регистрация: Dec 2015
Сообщений: 5
По умолчанию FlashDevelop и graphics - ничего не рисует

Друзья, при изучении AS3 возникла проблема.

Если я рисую в Main() - то все нормально. Если же пытаюсь нарисовать в init(), то ничего не видно.

Вот код из init():

Код AS3:
public var sp:Sprite; // Это вне функции лежит
 
...
 
sp.graphics.lineStyle( 5, 0x0000ff, 1 );
sp.graphics.moveTo( 0, 0 );
sp.graphics.lineTo( 100, 100 );
addChild( sp );
По теории должна быть линия. Её нет (

Кто что подскажет?
з.ы. Я гуглил, читал, пробовал копипастить куски из примеров - результат тот же

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А сам метод init() то вызывается в конструкторе Main?
Если он вызывается, то не может быть, чтобы линия не рисовалась

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

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 567
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Полный код в студию.
__________________
Я заклинаю вас действовать иначе.

Старый 08.12.2015, 12:01
DeeMOONger вне форума Посмотреть профиль Отправить личное сообщение для DeeMOONger Найти все сообщения от DeeMOONger
  № 4  
Ответить с цитированием
DeeMOONger

Регистрация: Dec 2015
Сообщений: 5
Разобрался. Да, я тупанул, не выложив полный код. Извиняюсь...
Причиной оказалось, что класс, в котором я использовал спрайт, тоже нужно addChild(). А я этого не делал.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Причиной оказалось, что класс, в котором я использовал спрайт, тоже нужно addChild(). А я этого не делал.
Что-то вы лукавите, батенька)
Если в конструкторе работает, значит он уже в дисплей листе, и никуда его добавлять не надо. Стало быть в первом сообщении не правильно описана проблема.
п.с.
Цитата:
класс, в котором я использовал спрайт, тоже нужно addChild()
Не класс, а экземпляр класса. Класс - это всего лишь шаблон (или набор инструкций) для создания экземпляров

Старый 15.12.2015, 14:38
Nikirozzz вне форума Посмотреть профиль Отправить личное сообщение для Nikirozzz Найти все сообщения от Nikirozzz
  № 6  
Ответить с цитированием
Nikirozzz

Регистрация: Oct 2013
Сообщений: 7
Схожая ситуация

Есть код в главном классе

Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import graphic.UIskin;
 
	[SWF(width='765', height='440', backgroundColor='#ffFFFf', frameRate="40")]
	[Frame(factoryClass = "Preloader")]
 
	public class Main extends Sprite 
	{
		public function Main() 
		{
 
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			var skin:UIskin = new UIskin();
			addChild(skin);
		}
 
	}
 
}
и собственно сам класс
Код AS3:
package graphic 
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.MouseEvent;
 
public class UIskin extends Sprite
{
 
public function UIskin() 
		{
init();
		}
public function init():void {
 
var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000000,0.5);
mc.graphics.drawRect(50,50,100,100);
mc.graphics.endFill();
addChild(mc);
		}	
	}
}
где-то я что-то упускаю но не могу понять что именно.

Старый 15.12.2015, 14:47
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 7  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
где-то я что-то упускаю но не могу понять что именно.
Рабочий код. Разве что прелоадер чудит.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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