![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Добрый день.
Немогу никак получить доступ к BitmapData объекта типа Sprite для отслеживания столкновений метода hitTest класса BitmapData. Приведу пример: Class Assets package { public class Assets { [Embed(source="../assets/objects/ship.png")] public static const SHIP:Class; [Embed(source="../assets/stalagmites.png")] public static const STALAGMITES:Class; } } Class Ship package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.DisplayObject; import flash.display.Sprite; public class Ship extends Character { private var _shipBitmapData:BitmapData; private var _shipBitmap:Bitmap; private var _ship:DisplayObject; public function Ship() { _ship = new Assets.SHIP(); _shipBitmapData = new BitmapData(_ship.width, _ship.height, true, 0); _shipBitmapData.draw(_ship); _shipBitmap = new Bitmap(_shipBitmapData); _sprite = new Sprite(); _sprite.addChild(_shipBitmap); // Спрайт по иерархии наследования затем добавляется в класс World } } } package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.DisplayObject; import flash.display.Sprite; public class World extends Sprite { private var _stalagmites:DisplayObject; private var _stalagmitesBitmap:Bitmap; private var _stalagmitesBitmapData:BitmapData; private var _stalagmitesPoint:Point; private var _stalagmitesSprite:Sprite; public function World() { makeStalagmites(); addEventListener(Event.ENTER_FRAME, update); } private function makeStalagmites():void { _stalagmites = new Assets.STALAGMITES(); _stalagmitesBitmapData = new BitmapData(_stalagmites.width, _stalagmites.height, true, 0); _stalagmitesBitmapData.draw(_stalagmites); _stalagmitesBitmap = new Bitmap(_stalagmitesBitmapData); _stalagmitesBitmap.y = App.SCREEN_HEIGHT - _stalagmitesBitmap.height; _stalagmitesSprite = new Sprite(); _stalagmitesSprite.addChild(_stalagmitesBitmap); addChild(_stalagmitesSprite); } private function update(event:Event):void { _shipPoint = new Point(_ship.x, _ship.y); _stalagmitesPoint = new Point(_stalagmitesSprite.x, _stalagmitesSprite.y); // Должно быть так, но вот обратиться к объекту BitmapData класса Ship немогу if (_shipBitmapData.hitTest(_shipPoint, 255, _stalagmitesBitmapData, _stalagmitesPoint, 255)) { _stalagmitesBitmap.filters = [new GlowFilter()]; } else { _stalagmitesBitmap.filters = []; } } } } Последний раз редактировалось goldlider; 17.07.2012 в 20:25. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
А вот у вас там написано слово private - оно что делает?
И класс Assets.SHIP - он extends Bitmap на самом деле (если я не всё забыл и он таки битмапдата %), т.е. Ship можно поправить как package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.DisplayObject; import flash.display.Sprite; public class Ship extends Character { public var _shipBitmapData:BitmapData;//таки private кое-что означает private var _shipBitmap:Bitmap; public function Ship() { _shipBitmap = new Assets.SHIP(); _shipBitmapData = _shipBitmap.bitmapData; _sprite = new Sprite(); _sprite.addChild(_shipBitmap); // Спрайт по иерархии наследования затем добавляется в класс World } } }
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Ссори исправил. Но это не столь важно при данном вопросе.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Вы в общем спрашиваете, как получить BitmapData из Sprite? Никак, у спрайта может не быть её.
Из Ship оно достается как поле его просто (если вот оно не private). Или можно геттер какой-нить сделать, если вы приверженец религии, где поля не надо паблик делать. Только не вижу связи между World и Ship.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|