Итак, я работаю над флеш-игрой, где я использую bitmapdata для определения обнаружения столкновений с рельефом. Идея состояла в том, чтобы иметь два набора рельефных плит, один с фактическим рельефом сверху и более простой, с несколькими основными цветами, чтобы определить столкновение. Таким образом, если герой вступает в контакт с определенным цветом на «карте высот», его движение может быть остановлено, замедлено, он может получить урон или масштабироваться вверх и вниз, чтобы показать разницу в высоте. Чтобы сделать это, мне нужно добавить целую кучу плиток высотных карт с помощью массива, так же как я добавляю сами плитки. Выполнение этого через bitmapdata оказалось намного сложнее, чем я ожидал, и я продолжаю сталкиваться с ошибками при использовании следующего кода.AS3 BitmapData Collision Detection
Это ошибка, которую я получаю: TypeError: Ошибка # 1010: термин неопределен и не имеет свойств.
Насколько я могу сказать, что это идет из следующего бита кода:
var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height);
Но я понятия не имею, что я делаю неправильно. Вот код в полном объеме, хотя я не удосужился части массива все же, просто необходимо, чтобы получить эту работу первой, и я действительно хочу, чтобы попытаться выяснить, остальные для себя:
var heightMapClip = new heightMap();
heightContainer.addChild(heightMapClip);
var heightData:String;
var hContainer:Sprite = new Sprite();
heightMapClip.x=-200;
heightMapClip.y=-200;
var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height);
bitmapData.draw(heightContainer.heightMapClip);
var myHeightMap:Bitmap = new Bitmap(bitmapData);
heightContainer.addChildAt(hContainer,0);
heightContainer.hContainer.addChild(myHeightMap);
heightContainer.hContainer.addEventListener(Event.ENTER_FRAME, onClick);
function onClick(e:Event):void
{
var obj:Sprite = e.currentTarget as Sprite;
var myHeightMap:Bitmap = Bitmap(obj.getChildAt(0));
var pixelValue:uint = heightContainer.myHeightMap.bitmapData.getPixel(mouseX,mouseY);
heightData=pixelValue.toString(16);
if(heightData=="99ff00"){
trace("Collision Detected");
}
}
Любая помощь по этому вопросу будет принята с благодарностью.
Решил это случайно: D – vagabond80