我在我的舞台上有对象 char,我用 main.as 控制它,但是当我决定把它做成 char.as 并将它添加到 main.as 时,就变成了错误..
主文件
package
{
import flash.display.MovieClip;
import flash.events.*;
import flash.display.Sprite;
import flash.sampler.DeleteObjectSample;
import flashx.textLayout.utils.CharacterUtil;
public class main extends MovieClip
{
public function main()
{
var mychar:char = new char();
mychar.x = 60;
mychar.y = 60;
addChild(mychar);
}
}
}
字符.as
package
{
import flash.display.MovieClip;
import flash.events.*;
import flash.display.Sprite;
import flash.sampler.DeleteObjectSample;
public class char extends MovieClip
{
//char vars
var isRight:Boolean = false;
var isLeft:Boolean = false;
var isUp:Boolean = false;
var isDown:Boolean = false;
var angleDegree;
var angleRadian;
//stage vars
var objects = new Array(50);
public function char()
{
for (var i = 0; i<numChildren; i++) {
objects[i] = getChildAt(i);
}
addEventListener(Event.ENTER_FRAME, charEnterFrame);
addEventListener( MouseEvent.MOUSE_DOWN , MouseClick);
addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
addEventListener(KeyboardEvent.KEY_UP, KeyUp);
}
function charEnterFrame(e:Event)
{
// **Char rotation
angleRadian=Math.atan2(mouseY-this.y,mouseX-this.x);
angleDegree = angleRadian * 180 / Math.PI;
this.rotation = angleDegree;
// **Char Movement
if (isRight==true)this.x += 5;
if (isLeft==true)this.x -= 5;
if (isUp==true)this.y -= 5;
if (isDown==true)this.y += 5;
}
function MouseClick(event:MouseEvent)
{
var radius = 30;
trace(objects.length);
var dx = radius * Math.cos(angleRadian);
var dy = radius * Math.sin(angleRadian);
var movex = 20 * Math.cos(angleRadian);
var movey = 20 * Math.sin(angleRadian);
var bullet = new Sprite();
bullet.graphics.beginFill(0x000000);
bullet.graphics.drawCircle(this.x+dx, this.y+dy, 3);
bullet.graphics.endFill();
var i = 1;
var f:Function;
addChild(bullet);
bullet.addEventListener(Event.ENTER_FRAME, f = function(){
bullet.x += movex*i;
bullet.y += movey*i;
for (var j = 0; j < objects.length-1; j++) {
if (bullet.hitTestObject(objects[j])) {
bullet.graphics.clear();
}
}
i++;
});
}
function KeyDown(event:KeyboardEvent):void
{
if (event.keyCode == 39)isRight = true;
if (event.keyCode == 37)isLeft = true;
if (event.keyCode == 38)isUp = true;
if (event.keyCode == 40)isDown = true;
}
function KeyUp(event:KeyboardEvent):void
{
if (event.keyCode == 39)isRight = false;
if (event.keyCode == 37)isLeft = false;
if (event.keyCode == 38)isUp = false;
if (event.keyCode == 40)isDown = false;
}
}
}
闪现结果:http://www.shareswf.com/media/games/swf/28063.swf