forked from: flash on 2010-10-11
forked from flash on 2010-10-11 (diff: 60)
ActionScript3 source code
/**
* Copyright yukifuruyoru ( http://wonderfl.net/user/yukifuruyoru )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/k6JG
*/
// forked from yukifuruyoru's flash on 2010-10-11
package {
[SWF(width = "465", height = "465", frameRate = "30")]
import flash.display.Sprite;
import flash.display.Shape;
public class FlashTest extends Sprite {
public function FlashTest() {
var noir:Shape=new Shape;
noir.graphics.beginFill(0xcccccc);
noir.graphics.drawRect(0,0,465,465);
graphics.endFill();
addChild(noir);
inittrace(stage);
trace("trace test");
new Main(stage);
}
}
}
import flash.geom.Matrix;
import flash.utils.Proxy;
import flash.geom.Rectangle;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
class Main extends Object{
public var stg:Stage;
public var FRIC:Number=0.5;
public var MAXSPD:Number=4;
public var duma:uint;
public var dumb:Number;
public var key:Vector.<Boolean>;
public var com:uint=0;
public var jug:Jugador=new Jugador;
public var animas:Vector.<Object>=Vector.<Object>([jug]);
public var mundo:Mundo=new Mundo();
public var moni:Monitor;
public function Main(_stg:Stage){
trace("<Main");
init(_stg);
function init(_stg:Stage):void{
stg=_stg;
trace("load key");
var kbw:KBW=new KBW(stg);key=kbw.kc;
stg.addChild(mundo);
stg.addChild(jug);
trace("load oef");
stg.addEventListener(Event.ENTER_FRAME,oef);
trace("load monitor");
moni=new Monitor();stg.addChild(moni);
}
trace("Main>");
}
//-------------------------------------------------------------------------
private function oef(...args):void{
friction();
//gravity
keymap();
react();
crash();
//and go
//state refresh
posrefr();
//grafic refresh
moni.jugspd.text=String("spd x: "+jug.spd.x+"\nspd y: "+jug.spd.y);
moni.jugpos.text=String("pos x: "+jug.pos.x+"\npos y: "+jug.pos.y);
}
//-------------------------------------------------------------------------
private function friction():void{
duma=animas.length;
for(var i:uint=0;i<duma;i++){
dumb=animas[i].spd.x;
if(dumb!=0){
if(dumb>0){if(dumb>FRIC){animas[i].spd.x-=FRIC}else{animas[i].spd.x=0;}}
else{if(dumb<-FRIC){animas[i].spd.x+=FRIC}else{animas[i].spd.x=0;}}
}
}
}
private function keymap():void{
//←↑→↓z
com=0;
if(key[37])com+=0x000001;
if(key[38])com+=0x000002;
if(key[39])com+=0x000004;
if(key[40])com+=0x000008;
if(key[90])com+=0x000010;
}
private function react():void{
if(key[37]&&key[39])com-=0x000005;
if(key[38]&&key[40])com-=0x00000A;
if(com&0x000001)jug.spd.x=-MAXSPD;
if(com&0x000002)jug.spd.y=-1;
if(com&0x000004)jug.spd.x=MAXSPD;
if(com&0x000008)jug.spd.y=1;
}
private function crash():void{
jug.pos=jug.pos.add(jug.spd);
}
private function starefr():void{
}
private function posrefr():void{
place(jug,jug.pos.x,jug.pos.y);
}
}
//---------------------------------------------
import flash.display.BitmapData;
class Imagenes extends Sprite{
public var W:uint;
public var H:uint;
public var ventana:BitmapData;
public var noir:BitmapData;
public var pto0:Point=new Point(0,0);
public var rec0:Rectangle;
public var dum:uint;
public var ske:BitmapData;
public function Imagenes(_W:uint,_H:uint):void{
W=_W;H=_H;
rec0=new Rectangle(0,0,W,H);
noir=new BitmapData(W,H,true,0xFF000000);
ventana=new BitmapData(W,H,true,0xFFFFFFFF);
this.graphics.beginBitmapFill(ventana);
this.graphics.drawRect(0,0,W,H);
this.graphics.endFill();
}
}
class Mundo extends Shape{
public var W:uint=465;
public var H:uint=465;
public var solidarr:Array=[[10,290,100,20],[350,200,100,20],[105,300,256,250]];
public var img0:BitmapData=new BitmapData(W,H,true,0x00ffffff)
public function Mundo(){
var dum:uint=solidarr.length;
var rec:Rectangle;
img0.lock();
for(var i:uint=0;i<dum;i++){
rec=new Rectangle(solidarr[i][0],solidarr[i][1],solidarr[i][2],solidarr[i][3]);
img0.fillRect(rec,0xFF000000);
}
img0.unlock();
this.graphics.beginBitmapFill(img0);
this.graphics.drawRect(0,0,465,465);
this.graphics.endFill();
}
}
class Jugador extends Sprite{
public var pos:Point=new Point(120,120);
public var spd:Point=new Point(0,0);
public var img0:BitmapData=(new Dna([[24,32],[0x0,0xff000000],[[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,1,1],[0,0,0,0,1,1],[0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1,1,1],[0,0,0,0,0,0,0,0,0,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,1,1],[0,0,0,0,0,0,1,1],[1,0,0,0,0,1,1],[1,0,1,1,1,1],[1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1]]])).bmp;
public var gra1:Bitmap=new Bitmap(img0);
public var gra2:Bitmap=new Bitmap(new BitmapData(24,32,true,0xFF00FF00));
public var gra:Bitmap=gra1;
public function Jugador():void{
place(gra,-12,-32);
this.addChild(gra);
gra=gra2;
}
}
class Bicho extends Object{
}
class Monitor extends Sprite{
public var jugpos:TextField=new TextField;
public var jugspd:TextField=new TextField;
public function Monitor(){
addChild(jugpos);place(jugpos,0,0);
addChild(jugspd);place(jugspd,100,0);
}
}
function place(tgt:Object,x:Number,y:Number):void{
tgt.x=x;tgt.y=y;
}
//keyboard watcher
import flash.events.KeyboardEvent;
class KBW extends Object{
public var kc:Vector.<Boolean>=new Vector.<Boolean>(128);
public function KBW(stage:Stage){
stage.addEventListener(KeyboardEvent.KEY_DOWN,okd);
stage.addEventListener(KeyboardEvent.KEY_UP,oku);
}
private function okd(e:KeyboardEvent):void{
kc[e.keyCode]=true;
//trace(e.keyCode);
}
private function oku(e:KeyboardEvent):void{
kc[e.keyCode]=false;
}
}
//DNA
import flash.display.BitmapData;
class Dna{
public var size:Vector.<uint>=Vector.<uint>([1,1]);
public var palette:Vector.<uint>=Vector.<uint>([0,0xFFffffff]);
public var map:Vector.<Vector.<uint>>=Vector.<Vector.<uint>>([new Vector.<uint>(1)]);
public function Dna(code:Array){
size=Vector.<uint>(code[0]);
palette=Vector.<uint>(code[1]);
code[2].forEach(
function(row:Array,h:uint,...args):void{
map[h]=Vector.<uint>(row);});
}
public function get bmp():BitmapData{
var sheep:BitmapData=new BitmapData(size[0],size[1],true,palette[0]);
var L:uint=palette.length;
map.forEach(function(row:Vector.<uint>,h:uint,...args):void{
row.forEach(function(c:uint,w:uint,...args):void{if(c&&(c<L)){sheep.setPixel32(w,h,palette[c]);}});
});
return sheep;
}
}
///// WONDERFL TRACE /////
import flash.display.Stage;
import flash.text.TextField;
import flash.text.TextFormat;
function inittrace(s:Stage):void
{
WTrace.initTrace(s);
}
//global trace function
var trace:Function;
//wtreace class
class WTrace
{
private static var FONT:String = "Fixedsys";
private static var SIZE:Number = 12;
private static var TextFields:Array = [];
private static var trace_stage:Stage;
public static function initTrace(stg:Stage):void
{
trace_stage = stg;
trace = wtrace;
}
private static function scrollup():void
{
// maximum number of lines: 100
if (TextFields.length > 100)
{
var removeme:TextField = TextFields.shift();
trace_stage.removeChild(removeme);
removeme = null;
}
for(var x:Number=0;x<TextFields.length;x++)
{
(TextFields[x] as TextField).y -= SIZE*1.2;
}
}
public static function wtrace(... args):void
{
var s:String="";
var tracefield:TextField;
for (var i:int;i < args.length;i++)
{
// imitating flash:
// putting a space between the parameters
if (i != 0) s+=" ";
s+=args[i].toString();
}
tracefield= new TextField();
tracefield.autoSize = "left";
tracefield.text = s;
tracefield.y = trace_stage.stageHeight - 20;
var tf:TextFormat = new TextFormat(FONT, SIZE);
tracefield.setTextFormat(tf);
trace_stage.addChild(tracefield);
scrollup();
TextFields.push(tracefield);
}
}
