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

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

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

Регистрация: Mar 2013
Сообщений: 41
По умолчанию Loader, BitmapData и атлас

Главный класс
Код AS3:
package
{
import flash.display.Sprite;
/**
	 * ...
	 * @author xrapa
	 */
public class HungryFrog extends Sprite
	{
 
 
 
		public var preloader:Preloader=new Preloader();
public var atlasClass:Atlas=new Atlas();
		public function HungryFrog ():void {
 
 
 
addChild(preloader);
addChild(atlasClass);
 
 
 
 
		}
 
	}}
Preloader
Код AS3:
package
{
 
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.net.URLRequest;
	import flash.display.Bitmap;
 
 
 
	public class Preloader extends Sprite
	{
 
 
		public var atlas:Loader;
 
 
 
 
		[Embed(source="assets/myx-z-yl1.png")]
		public static const MYX:Class;
		public var myx:Bitmap=Bitmap(new MYX());
 
 
 
 
		public function Preloader():void
		{
 
			atlas = new Loader();
	        atlas.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, patlas);
			atlas.contentLoaderInfo.addEventListener(Event.COMPLETE, catlas);
			atlas.load(new URLRequest("assets/atlas.png"));
 
 
 
 
			trace("Preloader");
 
		}
 
 
 
 
		public function patlas (e:ProgressEvent):void {addChild(myx);myx.x=((stage.stageHeight/2)-(myx.height/2));myx.y=((stage.stageWidth/2)-(myx.width/2)); myx.smoothing = true;trace(e.bytesLoaded/e.bytesTotal);myx.scaleX=(e.bytesLoaded/e.bytesTotal);myx.scaleY=(e.bytesLoaded/e.bytesTotal);} 
 
		public function catlas (e:Event):void {trace("catlas");
	atlas.removeEventListener(Event.COMPLETE, patlas); 
		atlas.removeEventListener(ProgressEvent.PROGRESS, catlas);
		removeChild(myx);myx=null;
 
 
		}
 
 
 
 
 
		}
	}
Атлас
Код AS3:
package
{
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
 
	public class Atlas extends Sprite
	{
 
		[Embed(source="assets/atlas.xml", mimeType="application/octet-stream")]
		public static const AtlasXml:Class;	
 
 
		public var loaderBitmapData:BitmapData;
		public var preloader:Preloader=new Preloader();
 
		public var atlasXML:XML = XML(new AtlasXml());
 
		public var image1:Bitmap;
 
 
		public function Atlas():void
		{
			loaderBitmapData = new BitmapData(preloader.atlas.width, preloader.atlas.height);
			loaderBitmapData.draw(preloader.atlas);
			image1 = new Bitmap(loaderBitmapData);
		addChild(image1);
 
		}	
	}
}
В прелоадере подгружаю атлас, в классе атлас нужно разделить картинку по xml. Помогите это написать.

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

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

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

Регистрация: Mar 2007
Сообщений: 319
зачем делить, если можно отрисовать и так

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

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Цитата:
Сообщение от Nooob Посмотреть сообщение
зачем делить, если можно отрисовать и так
Да, Graphics#beginBitmapFill Вам в помощь.

Старый 14.03.2013, 15:59
xrapa вне форума Посмотреть профиль Отправить личное сообщение для xrapa Найти все сообщения от xrapa
  № 5  
Ответить с цитированием
xrapa

Регистрация: Mar 2013
Сообщений: 41
СПАСИБО, с этим разобрался. А как мне теперь спрайт mySprite из класса Atlas добавить на экран после загрузки лоадера.
Главный класс
Код AS3:
package
{
import flash.display.Sprite;
/**
	 * ...
	 * @author xrapa
	 */
public class HungryFrog extends Sprite
	{
 
 
 
	public  var preloader:Preloader=new Preloader();
 
		public function HungryFrog ():void {
 
 
 
addChild(preloader);
 
 
 
 
 
		}
 
	}}
Preloader
Код AS3:
package
{
 
	import flash.display.Bitmap;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.net.URLRequest;
 
 
 
	public class Preloader extends Sprite
	{
 
 
		public var atlas:Loader;
 
		[Embed(source="assets/myx-z-yl1.png")]
		public static const MYX:Class;
		public var myx:Bitmap=new MYX();
 
		public var atlasClass:Atlas=new Atlas();
 
 
		public function Preloader():void
		{
 
			atlas = new Loader();
	        atlas.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, patlas);
			atlas.contentLoaderInfo.addEventListener(Event.COMPLETE, catlas);
			atlas.load(new URLRequest("assets/atlas.png"));
 
 
		/*	ATLAS =event.target.content.bitmapData;
		//image1 = new Bitmap(ATLAS);
		logoxrapa = new Bitmap();
		logoxrapa.bitmapData = new BitmapData(669, 267);
		logoxrapa.bitmapData.copyPixels(ATLAS,
			new Rectangle(130, 571, 669, 267),
			new Point(0, 0));
		logoxrapa.scaleX=0.7;
		logoxrapa.scaleY=0.7;
		addChild(logoxrapa);*/
 
			trace("Preloader");
 
		}
 
 
 
 
		public function patlas (e:ProgressEvent):void {addChild(myx);myx.x=((stage.stageHeight/2)-(myx.height/2));myx.y=((stage.stageWidth/2)-(myx.width/2)); myx.smoothing = true;trace(e.bytesLoaded/e.bytesTotal);myx.scaleX=(e.bytesLoaded/e.bytesTotal);myx.scaleY=(e.bytesLoaded/e.bytesTotal);} 
 
		public function catlas (event:Event):void {trace("catlas");
	atlas.removeEventListener(Event.COMPLETE, patlas); 
		atlas.removeEventListener(ProgressEvent.PROGRESS, catlas);
		removeChild(myx);myx=null;
		addChild(atlasClass.mySprite);
 
 
		}
 
 
 
 
 
		}
 
 
 
	}
Атлас
Код AS3:
package
{
 
 
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.geom.Matrix;
 
 
	public class Atlas extends Sprite
	{
 
		[Embed(source="assets/atlas.xml", mimeType="application/octet-stream")]
		public static const AtlasXml:Class;	
 
		public var mySprite:Sprite;
		public var myBitmap:BitmapData;
		public var matrix:Matrix;
 
 
		public var preloader:Preloader=new Preloader();
	//	public var atlasXML:XML = XML(new AtlasXml());
 
 
 
 
		public function Atlas():void
		{
 
			myBitmap= new BitmapData(preloader.atlas.width, preloader.atlas.height, false);
 
			myBitmap.draw(preloader.atlas);
 
			matrix= new Matrix();
 
 
			mySprite.graphics.beginBitmapFill(myBitmap, matrix, true);
			mySprite.graphics.drawRect(100, 50, 200, 90);
			mySprite.graphics.endFill();
 
		}	
	}
}

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

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

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


 


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


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