Pseudo estrellas con perspectiva ... @author OISB debosotnas forked:0favorite:0lines:165license : All rights reserved modified : 2009-04-20 09:40:45 Embed Tweet package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.display.PixelSnapping; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BlurFilter; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.geom.Point; import flash.utils.Dictionary; import flash.text.TextField; import net.hires.debug.Stats; /** * ... * @author OISB */ public class espacio_2 extends Sprite { public var contenedor:Sprite; public var bmpD:BitmapData; public var bmp:Bitmap; private var filtro_blur:BlurFilter; private var circulo_b:Sprite; private var color_filter_transf:ColorTransform=new ColorTransform(0.985,0.985,0.985, .9); private var _glow:GlowFilter=new GlowFilter(0xFFFFFF,.1,.1,.1) private var fin_circulo_b:Sprite; private var offset_correc:int = 10; private var ancho_p:int = 460; private var alto_p:int = 460; public var vector_esfe:Dictionary = new Dictionary(); private const CONTADOR_NUM_MAX_PIX:uint = 400; private var cont_num_actual_pix:uint = 0; private var P1:Sprite; private var P2:Sprite; private var P3:Sprite; private var P4:Sprite; private var vertices: Vector.<Number>; private var catetos: Vector.<Number>; public function espacio_2() { circulo_b = new Sprite(); contenedor = new Sprite(); filtro_blur = new BlurFilter(2, 2, 1); bmpD = new BitmapData(ancho_p, alto_p, false, 0x0); bmp = new Bitmap(bmpD); //contenedor.addChild(bmp); addChild(contenedor); fin_circulo_b = new Sprite(); addEventListener(Event.ENTER_FRAME, on_enter_frame); setPoints(); //drawTriangle(); var stadi:Stats = new Stats(); contenedor.addChild(stadi); stadi.y = 40; } private function drawTriangle():void { vertices = new Vector.<Number>(); catetos = new Vector.<Number>(); vertices.push(P1.x, P1.y); vertices.push(P2.x, P2.y); vertices.push(P3.x, P3.y); vertices.push(P2.x, P2.y); vertices.push(P4.x, P4.y); vertices.push(P3.x, P3.y); catetos.push(0, 0); catetos.push(1, 0); catetos.push(0, 1); catetos.push(1, 0); catetos.push(1, 1); catetos.push(0, 1); contenedor.graphics.clear(); contenedor.graphics.beginBitmapFill(bmpD); contenedor.graphics.drawTriangles(vertices, null, catetos); contenedor.graphics.endFill(); } private function setPoints():void{ P1 = newPoint(); P2 = newPoint(); P3 = newPoint(); P4 = newPoint(); P4.x = P2.x = bmpD.width; P4.y = P3.y = bmpD.height; P1.addEventListener(MouseEvent.MOUSE_DOWN, startPointDrag); P2.addEventListener(MouseEvent.MOUSE_DOWN, startPointDrag); P3.addEventListener(MouseEvent.MOUSE_DOWN, startPointDrag); P4.addEventListener(MouseEvent.MOUSE_DOWN, startPointDrag); stage.addEventListener(MouseEvent.MOUSE_UP, EventHandler); } private function EventHandler(event:Event):void{ switch(event.type){ case MouseEvent.MOUSE_UP: removeEventListener(MouseEvent.MOUSE_MOVE, EventHandler); stopDrag(); default: drawTriangle(); } } private function startPointDrag(event:MouseEvent):void { addEventListener(MouseEvent.MOUSE_MOVE, EventHandler); event.currentTarget.startDrag(); drawTriangle(); } private function newPoint():Sprite { var point:Sprite = new Sprite(); point.graphics.beginFill(0xFF9933); point.graphics.drawRect(-5, -5, 10, 10); point.graphics.endFill(); point.buttonMode = true; contenedor.addChild(point); return point; } private function on_enter_frame(e:Event):void { agregar_pixelines(); mover_pixelines_a_pintar(); bmpD.draw(fin_circulo_b); bmpD.applyFilter(bmpD, bmpD.rect, new Point(), filtro_blur); bmpD.colorTransform(bmpD.rect, color_filter_transf); drawTriangle(); } private function agregar_pixelines():void { if(cont_num_actual_pix < CONTADOR_NUM_MAX_PIX){ var p:Pixelin = new Pixelin(ancho_p/2, alto_p/2, 0xFFFFFF, fin_circulo_b); vector_esfe[p] = true; cont_num_actual_pix++; } } private function mover_pixelines_a_pintar():void { for (var i:* in vector_esfe) { var elem_temp:Pixelin = Pixelin(i); elem_temp.mover_y_pintar(); if (elem_temp.contenedor_interno.x > ancho_p+offset_correc || elem_temp.contenedor_interno.x < -offset_correc || elem_temp.contenedor_interno.y > alto_p+offset_correc || elem_temp.contenedor_interno.y < -offset_correc) { delete vector_esfe[i]; cont_num_actual_pix--; } } } } } import flash.display.DisplayObjectContainer; import flash.display.Sprite; class Pixelin { private var color:uint; private var angulo:Number; public var contenedor_interno:Sprite; private var dist_salto:Number; private var cont_salto:int; public function Pixelin(_x:int, _y:int, _color:Number, _contenedor_ppal:DisplayObjectContainer) { color = _color; angulo = Math.random() * (360 * Math.PI / 180); contenedor_interno = new Sprite(); var temp_dispObj:Sprite = new Sprite(); temp_dispObj.graphics.beginFill(color); temp_dispObj.graphics.drawCircle(0, 0, 2); temp_dispObj.graphics.endFill(); contenedor_interno.addChild(temp_dispObj); _contenedor_ppal.addChild(contenedor_interno); contenedor_interno.x = _x; contenedor_interno.y = _y; dist_salto = .02; cont_salto = 0; } public function mover_y_pintar():void { contenedor_interno.x += Math.sin(angulo) * dist_salto; contenedor_interno.y += Math.cos(angulo) * dist_salto; cont_salto++; if (cont_salto % 20) { dist_salto += .04; cont_salto = 0; } } } Code Fullscreen Preview Fullscreen bitmapdata colortransform drawtriangles matrix color MouseEvent.MOUSE_DOWN Dictionary push Stats MouseEvent.MOUSE_MOVE GlowFilter MouseEvent.MOUSE_UP startDrag stopDrag buttonMode removeEventListener type height width addEventListener MouseEvent.ENTER_FRAME MouseEvent Math.cos addChild