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

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

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

Регистрация: Oct 2013
Сообщений: 7
По умолчанию Не подгружается bitmap из массива

Делаю генератор хекс карты. Если просто отрисовываю хексы и добавляю их в массив, все работает прекрасно. Однако если заменить векторный спрайт(grass) на спрайт с битмапом(bit), все перестает работать. Что я делаю не так?


Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.DisplayObject;
    import flash.display.Graphics;
    import flash.display.Shape;
 
	/**
	 * ...
	 * @author Nikiroz
	 */
 
 
	public class Main extends Sprite 
 
{
		private var mapArray:Array = new Array(),
		RADIUS:Number = 60,
		WIDTH_MAP:Number = 10,
		HEIGHT_MAP:Number = 8,
		HEX_SCALE:Number =0.4,
		map:Sprite = new Sprite(),
		hex_skin:Bitmap=new Bitmap(new hex_veld1);
 
 
 
	public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
	private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			doDrawHex();
		}
 
private function generateRndColor():uint
{
    var color:uint = Math.random() * 0x1000000;
    return color;
}
 
 private function doDrawHex():void {
 
	var kk:uint = 1;
	var kol:uint =	WIDTH_MAP * HEIGHT_MAP;
 
	for (var k:uint = 0; k <= kol+1; k += 1 )		{	
		var colorBox:uint = generateRndColor();
		var grass:Sprite = new Sprite();
		var bit:Sprite = new Sprite();
		grass.graphics.lineStyle (1, colorBox, 100);
		grass.graphics.beginFill (colorBox,1)
		grass.graphics.moveTo (RADIUS, 0);
			for (var i:int = 0; i <= 360; i += 360 / 6)
				{
					var radians:Number = i * Math.PI / 180;
					var x:Number = Math.cos (radians) * RADIUS;
					var y:Number = Math.sin (radians) * RADIUS;
					grass.graphics.lineTo (x, y);
				}
		grass.scaleY = 0.5;
		bit.addChild(hex_skin);
		bit.scaleY = bit.scaleX = HEX_SCALE;
		mapArray[k] = grass;
	}
var yy:Number = 0;
for (var v:uint = 0; v <= HEIGHT_MAP-1; v += 1 ){	
mapArray[kk].x = 0;	
mapArray[kk].y = yy;
map.addChild (mapArray[kk])
kk++
 
	for (var d:uint = 1; d <= WIDTH_MAP-1; d += 1 ){
		mapArray[kk].x += mapArray[kk - 1].x + mapArray[kk].width / 1.35;
			if ((d & 1)) { 
				mapArray[kk].y += mapArray[kk - 1].y + mapArray[kk].height / 2; 
			} else {
				mapArray[kk].y = yy;
			}
		map.addChild (mapArray[kk])
		kk++	
	}
yy += mapArray[kk].height;
}
addChild(map);
	}		
	}
	}

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Первое что попалось в глаза это в цикле
Код AS3:
bit.addChild(hex_skin);
hex_skin у вас только один и он не может находиться сразу во всех спрайтах, которые вы создаёте циклом, родитель может быть только один. Может дело в этом?

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

Регистрация: Oct 2013
Сообщений: 7
Да, дело было в этом. Большое спасибо.

Старый 12.12.2014, 18:28
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
На здоровье!

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

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

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


 


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


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