Название может немного ввести в заблуждение. Посмотрите на мой код, и я объясню
public static function loadTile(tileDir:String = "empty"):void
{
if(tileDir != "empty")
{
tPoint = new Point(0,0);
tRect = new Rectangle(0,0,30,30);
//load in tile sheet image
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT,tilesLoadInit);
loader.load(new URLRequest(tileDir));
}
}
private static function tilesLoadInit (e:Event):void {
tileImage = Bitmap(loader.content).bitmapData;
tileReady.dispatchEvent(new Event("TileReady"));
}
var tImage:BitmapData = new BitmapData(30,30);
tileNum = tileNumber;
tPoint.x = 0;
tPoint.y = 0;
tRect.x = 0;
tRect.y = 0;
tImage.copyPixels(tileImage,tRect,tPoint);
this.graphics.beginBitmapFill(tImage);
this.graphics.drawRect(0, 0,tWidth ,tHeight );
Я создаю пустой bitMapData с именем tImage. Затем я беру предопределенную переменную с именем tileImage, которая также является bitMapData и содержит изображение изображения. tRect предопределен, а его ширина и высота 30x30. Копирую кусок изображения и помещаю в tImage. проблема в том, что AS3 выдает ошибку, говоря, что tImage - неправильный тип
ArgumentError: Error #2015: Invalid BitmapData.
Но очевидно, что это не так. мой вопрос в том, что есть что-то другое в типах данных bitMapData и bitMapData, которые принимает графический объект?
Пытаюсь сделать тайлинг спрайтами. Я хочу, чтобы мои плитки были интерактивными, поэтому я использую объект-спрайт вместо обычных растровых изображений для представления своих плиток. Вам может быть интересно, почему я не использую просто graphics.beginBitmapFill (tImage); и graphics.drawRect (0, 0, tWidth, tHeight); чтобы выбрать плитки, которые я хочу использовать. Причина в том, что оказывается, что первый и второй параметры drawRect () фактически изменяют местоположение фактического спрайта.
Поэтому, если я устанавливаю свойства x и y спрайта на x = 20 и y = 20., я устанавливаю свой drawRect (20,20). он фактически добавляет дополнительные 20 пикселей к моим координатам x и y моего спрайта. И я знаю причину, мне просто нужно знать способ получше. Приносим извинения за так много написанного и благодарим за уделенное время!