![]() |
|
||||||||||
|
|||||
package { import flash.display.Stage import flash.display.BitmapData; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.GlowFilter; import flash.geom.Matrix; import flash.geom.Point; public class LEDmatrix extends Sprite { private var bmpd1:BitmapData; private var bmpd2:BitmapData; private var LEDobj:LED; private var LEDobj2:LED; private var w:int; private var h:int; public function LEDmatrix() { if(super.stage) { init(); } else { // Получаем размер рабочей области this.addEventListener(Event.ADDED_TO_STAGE, init); } } public function init(e:Event = null):void { if(this.hasEventListener(Event.ADDED_TO_STAGE)) { this.removeEventListener(Event.ADDED_TO_STAGE, onAdded); } stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; var w:int = stage.stageWidth; var h:int = stage.stageHeight; trace("размер по горизонтали = ",h, "размер по вертикали = ", w); //создаем две звезды и добавляем их в список отображения runProgramm(); } private function runProgramm():void { // Определяем размер светодиода var size:Number = 3; //Зазор между светодиодами var LEDgap:Number = size + 6; // Определяем отступы от краев раб.обл.(слева и сверху); размер светодиода делённый надвое var identX:Number = size / 2; var identY:Number = identX; // Колличество светодиодов по горизонтали var LEDamtX:Number = Math.ceil(w / LEDgap); // Колличество светодиодов по вертикали var LEDamtY:Number = Math.ceil(h / LEDgap); LEDobj = new LED(60);//рисунок LEDobj.LEDlight = false; LEDobj.x = 200; LEDobj.y = 100; addChild(LEDobj); // Строим сетку из светодиодов: //сначала вертикаль for (var i:int=0; i<LEDamtX; i++) { //затем горизонталь for (var n:int=0; n<LEDamtY; n++) { // Создаём светодиодную матрицу из заранне заготовленных мувиклипов var LEDobj2:LED = new LED(size); var xn:Number = i * LEDgap + identX; var yn:Number = n * LEDgap + identY; LEDobj2.x = xn; LEDobj2.y = yn; LEDobj2.LEDlight = false;//выключаем СВЕТОДИОДЫ addChild(LEDobj2); } } // создаем два растровых изображения bmpd1 = new BitmapData(stage.stageWidth,stage.stageHeight,true,0); bmpd2 = bmpd1.clone(); // очищаем растровые изображения bmpd1.fillRect(bmpd1.rect, 0); bmpd2.fillRect(bmpd2.rect, 0); // отрисовываем каждую звезду в своем растровом изображении bmpd1.draw(LEDobj, new Matrix(1, 0, 0, 1, LEDobj.x, LEDobj.y)); bmpd2.draw(LEDobj2, new Matrix(1, 0, 0, 1, LEDobj2.x, LEDobj2.y)); // проверяем столкновение if (bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255)) { LEDobj2.graphics.clear(); LEDobj2.LEDlight = true;// оранджевый } else { LEDobj.visible = false; LEDobj.LEDlight = false;// серый } } } }
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
package { import flash.display.Stage import flash.display.BitmapData; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.GlowFilter; import flash.geom.Matrix; import flash.geom.Point; public class LEDmatrix extends Sprite { private var bmpd1:BitmapData; private var bmpd2:BitmapData; private var LEDobj:LED; private var LEDobj2:LED; private var w:int; private var h:int; public function LEDmatrix() { super(); addEventListener(Event.ADDED_TO_STAGE, onAdded); } private function onAdded(e: Event):void { removeEventListener(Event.ADDED_TO_STAGE, onAdded); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; //создаем две звезды и добавляем их в список отображения // Получаем размер рабочей области var w:int = stage.stageWidth; var h:int = stage.stageHeight; trace("размер по горизонтали = ",h, "размер по вертикали = ", w); // Определяем размер светодиода var size:Number = 3; //Зазор между светодиодами var LEDgap:Number = size + 6; // Определяем отступы от краев раб.обл.(слева и сверху); размер светодиода делённый надвое var identX:Number = size / 2; var identY:Number = identX; // Колличество светодиодов по горизонтали var LEDamtX:Number = Math.ceil(w / LEDgap); // Колличество светодиодов по вертикали var LEDamtY:Number = Math.ceil(h / LEDgap); LEDobj = new LED(60);//рисунок LEDobj.LEDlight = false; LEDobj.x = 200; LEDobj.y = 100; addChild(LEDobj); // Строим сетку из светодиодов: //сначала вертикаль for (var i:int=0; i<LEDamtX; i++) { //затем горизонталь for (var n:int=0; n<LEDamtY; n++) { // Создаём светодиодную матрицу из заранне заготовленных мувиклипов var LEDobj2:LED = new LED(size); var xn:Number = i * LEDgap + identX; var yn:Number = n * LEDgap + identY; LEDobj2.x = xn; LEDobj2.y = yn; LEDobj2.LEDlight = false;//выключаем СВЕТОДИОДЫ addChild(LEDobj2); } } // создаем два растровых изображения bmpd1 = new BitmapData(stage.stageWidth,stage.stageHeight,true,0); bmpd2 = bmpd1.clone(); // очищаем растровые изображения bmpd1.fillRect(bmpd1.rect, 0); bmpd2.fillRect(bmpd2.rect, 0); // отрисовываем каждую звезду в своем растровом изображении bmpd1.draw(LEDobj, new Matrix(1, 0, 0, 1, LEDobj.x, LEDobj.y)); bmpd2.draw(LEDobj2, new Matrix(1, 0, 0, 1, LEDobj2.x, LEDobj2.y)); // проверяем столкновение if (bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255)) { LEDobj2.graphics.clear(); LEDobj2.LEDlight = true;// оранджевый } else { LEDobj.visible = false; LEDobj.LEDlight = false;// серый } } } }
__________________
http://www.chessmax.ru |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:36. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| stage.stageheight , stage.stagewidth |
| Опции темы | |
| Опции просмотра | |
|
|