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

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

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

Регистрация: Mar 2007
Адрес: Таиланд
Сообщений: 121
Отправить сообщение для grunerasta с помощью ICQ
По умолчанию Заэмбедить спрайт - очередной вопрос удобства

В as есть такая конструкция:

Код:
		[Embed(source="assets/elka.png")]
		public static const elka:Class;
Эмбедит картинки, чтобы эту картинку вставить (а картинка юзается в нескольких местах), мне пришлось написать вот такую жесть:

Код:
			var btme:BitmapAsset=new elka() as BitmapAsset;
			var btmDatae:BitmapData=new BitmapData(btme.width,btme.height,true,0);
			btmDatae.draw(btme);
			var matrix:Matrix=new Matrix();
			matrix.tx=0-btme.width/2-4;
			matrix.ty=-btme.height+20;
			sprite.graphics.lineStyle(0,0,0);
			sprite.graphics.beginBitmapFill(btmDatae,matrix,false,true);
			sprite.graphics.drawRect(matrix.tx,matrix.ty,btme.width,btme.height);
А для чистоты кода хочу чтобы был статический класс с графикой, который сразу выдает спрайты, понятно что такая конструкция дать этого не может. Вопрос стандартный - что делать?

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

Регистрация: Sep 2002
Сообщений: 30,787
Это не в AS, а во Flex исключительно.
В CS3 используется иная схема.

Зачем в вашем коде промежуточный битмап — непонятно.

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

Регистрация: Mar 2007
Адрес: Таиланд
Сообщений: 121
Отправить сообщение для grunerasta с помощью ICQ
Ну так оно работает, как в хелпе написано, а как без битмапа сделать?

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

Регистрация: Sep 2002
Сообщений: 30,787
А вы узнайте, что такое BitmapAsset и какие у него свойства есть.

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

Регистрация: Mar 2007
Адрес: Таиланд
Сообщений: 121
Отправить сообщение для grunerasta с помощью ICQ
Круто, у него есть свойство bitmapData, 2 строки порезал, спасибо.

Но вопрос остается в силе.

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

Регистрация: Sep 2002
Сообщений: 30,787
Написать стат. метод, возвращающий спрайт.

Старый 27.11.2007, 20:32
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
или я недопонял чего или автор не умеет сказать чего хочет или тут какая-то тень на плетень наводится..
а почему по по простому-то нельзя?
Код:
package{
	import flash.display.Sprite;
	
	public class Main extends flash.display.Sprite{
		public function Main():void	{
			var elka:Elka=new Elka();
			addChild(elka);
		}
	}
}

import flash.display.Sprite;
import flash.display.Bitmap;
class Elka extends Sprite{
	[Embed(source="elka.png")]
	public static const ElkaPNG:Class;
	public function Elka():void{
		var el:Bitmap=new ElkaPNG();
		addChild(el);
		el.x=-width/2-4;
		el.y=-height+20;
	}
}
дада, сори
никакой тени: "Написать стат. метод, возвращающий спрайт"
это уж кому чего надо
Код:
package{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	
	public class Main extends flash.display.Sprite{
		[Embed(source="elka.png")]
		public static const ElkaPNG:Class;
		public function Main():void	{
			var elka:Sprite=getElka();
			addChild(elka);
		}
		public static function getElka():Sprite{
			var sprite:Sprite=new Sprite();
			var el:Bitmap=new ElkaPNG();
			sprite.addChild(el);
			el.x=-sprite.width/2-4;
			el.y=-sprite.height+20;
			return sprite;
		}
	}
}


Последний раз редактировалось silin; 27.11.2007 в 20:46.
Старый 27.11.2007, 22:21
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 8  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
я тоже не до конца понял в чём загвоздка,
но может это то что надо...
Код:
package packageName{
    import flash.display.Bitmap;
    import flash.utils.getDefinitionByName;
    
    public class Assets{
        
        [Embed(source="../../assets/icons/printer.png")]    
        public var PrinterIcon:Class;
        public static const PRINTER_ICON:String = 'PrinterIcon';

        [Embed(source="../../assets/icons/delete.png")]    
        public var DeleteIcon:Class;
        public static const DELETE_ICON:String = 'DeleteIcon';

       // и так далее... 

        public static function getIt(name:String):Bitmap{
            var ref:Class = getDefinitionByName('packageName::Assets_'+name) as Class;
            return new ref();        
        }
        
        function Assets(){}
    }
}
а потом просто вызывать
Код:
var icon:Bitmap = Assets.getIt(Assets.PRINTER_ICON);
__________________
Хороший отдых - половина работы.

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

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

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


 


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


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