大佬们能不能帮我注释一下下面flash的代码

weixin_42537689 2018-07-03 04:06:31
package classes
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class myStage extends MovieClip
{
//定义一组物品类型的数据
private var m_bGame:Boolean; //是否在游戏
private var m_aObjects:Array;
private var m_nIndex:int; //被钩住的物体编号
private var m_nTime:int; //记录当前时间
private var m_nScore:int; //记录当前分数
private var m_nObjectScore:int; //记录目标分数
public function myStage()
{
stop();
m_aObjects = new Array(12);

m_nObjectScore = 1000;
T_ObjectScore.text = "" + m_nObjectScore;

Reset();
this.stage.addEventListener( MouseEvent.MOUSE_UP,onMouseUpEvent );

var myTimer:Timer = new Timer(50, 0);
myTimer.addEventListener("timer", timerHandler );
myTimer.start();
}
public function Reset()
{
for( var i:int = 0; i < m_aObjects.length; i ++ )
{
if( m_aObjects[i] != null )
{
this.removeChild( m_aObjects[i] );
}
m_aObjects[i] = null;
var type:int = int( Math.random() * myObject.OBJECT_TYPE_NUM );
if( type < myObject.OBJECT_TYPE_OBJECT_NUM )
{
m_aObjects[i] = new myObject();
}
else
{
m_aObjects[i] = new Monster();
}
m_aObjects[i].setType(type);
m_aObjects[i].x = 100 + Math.random() * 1080;
m_aObjects[i].y = 300 + Math.random() * 600;
this.addChild( m_aObjects[i] );
}
m_nIndex = - 1;
T_Win.visible = false;
T_Lost.visible = false;
m_nTime = 1200;
m_nScore = 0;
m_bGame = true;
}
public function onMouseUpEvent( e:MouseEvent ):void
{
if( m_bGame == false )
{
Reset();
return;
}
T_Miner.SendHook();
}
public function timerHandler(e:TimerEvent):void
{
if( m_bGame == false )
return;
var getObject:myObject = null;
if( m_nIndex != - 1 )
{
getObject = m_aObjects[m_nIndex];
}
if( T_Miner.Logic(getObject) == true )
{
m_nScore = m_nScore + m_aObjects[m_nIndex].getScore();
this.removeChild( m_aObjects[m_nIndex] );
m_aObjects[m_nIndex] = null;
m_nIndex = -1;
}
for( var i:int = 0; i < m_aObjects.length; i ++ )
{
if( m_aObjects[i] == null )
continue;
if( i == m_nIndex )
continue;
m_aObjects[i].Logic();
if( T_Miner.getObject( m_aObjects[i] ) == true )
{
m_nIndex = i;
}
}
T_Score.text = "" + m_nScore;
T_Time.text = "" + int(m_nTime * 0.05);
m_nTime --;
if( m_nTime <= 0 )
{
m_bGame = false;
if( m_nScore > m_nObjectScore )
{
T_Win.visible = true;
}
else
{
T_Lost.visible = true;
}
}

}
}
}
package classes
{
import flash.display.MovieClip;
import flash.geom.Point;

public class Miner extends MovieClip
{
//定义一组状态类型的数据
public static var MINER_STATE_NORMAL:int = 0; //正常状态
public static var MINER_STATE_SEND:int = 1; //放线
public static var MINER_STATE_RECV:int = 2; //收线
private var m_nState:int; //状态类型
private var m_bHookTurnRight:Boolean; //钩线向右旋转的标志
private var m_fHookAngle:Number; //钩线当前角度
private var m_LineMC:MovieClip;
private var m_oldPx:Number;
private var m_oldPy:Number;
private var m_moveLen:Number;

public function Miner()
{
setState( MINER_STATE_NORMAL );
m_bHookTurnRight = true;
m_fHookAngle = 0.0;

m_LineMC = new MovieClip();
this.addChild(m_LineMC);

m_oldPx = T_Hook.x;
m_oldPy = T_Hook.y;
m_moveLen = 0;


}
public function setState( sta:int )
{
m_nState = sta;
switch( m_nState )
{
case MINER_STATE_NORMAL:
stop();
break;
default:
play();
}
}
public function getState():int
{
return m_nState;
}
public function Logic( getObject:myObject ):Boolean
{
var R = false;
switch( m_nState )
{
case MINER_STATE_NORMAL:
if( m_bHookTurnRight == true )
{
T_Hook.rotationZ = T_Hook.rotationZ - 4;
if( T_Hook.rotationZ < -80 )
{
m_bHookTurnRight = false;
}
}
else
{
T_Hook.rotationZ = T_Hook.rotationZ + 4;
if( T_Hook.rotationZ > 80 )
{
m_bHookTurnRight = true;
}
}
break;
case MINER_STATE_SEND:

m_moveLen = m_moveLen + 10;
DrawHookAndLine();

if( m_moveLen > 1000 )
{
setState( MINER_STATE_RECV );
}
break;

break;
case MINER_STATE_RECV:
m_moveLen = m_moveLen - 20;
DrawHookAndLine();

if( getObject != null )
{
var arc = -T_Hook.rotationZ * Math.PI / 180;
var hx:Number = T_Hook.x + 50 * Math.sin(arc);
var hy:Number = T_Hook.y + 50 * Math.cos(arc);

var point:Point = new Point();
point.x = hx;
point.y = hy
point = this.localToGlobal(point);
getObject.x = point.x;
getObject.y = point.y;
}

if( m_moveLen <= 0 )
{
m_moveLen = 0;
if( getObject != null )
{
R = true;
}
setState( MINER_STATE_NORMAL );
}
break;
}
return R;
}
private function DrawHookAndLine()
{
var arc = -T_Hook.rotationZ * Math.PI / 180;
T_Hook.x = m_oldPx + m_moveLen * Math.sin(arc);
T_Hook.y = m_oldPy + m_moveLen * Math.cos(arc);

m_LineMC.graphics.clear();
m_LineMC.graphics.lineStyle( 0,0x000000 );
m_LineMC.graphics.moveTo( m_oldPx, m_oldPy );
m_LineMC.graphics.lineTo( T_Hook.x, T_Hook.y );
}
public function SendHook()
{
if( this.m_nState != MINER_STATE_NORMAL )
return;
setState( MINER_STATE_SEND );
}
public function getObject( obj:myObject ):Boolean
{
if( m_nState != MINER_STATE_SEND )
return false;
var arc = -T_Hook.rotationZ * Math.PI / 180;
var hx:Number = T_Hook.x + 50 * Math.sin(arc);
var hy:Number = T_Hook.y + 50 * Math.cos(arc);

var point:Point = new Point();
point.x = hx;
point.y = hy
point = this.localToGlobal(point);

var Wdis = 20 * Math.abs( obj.scaleX );
var Hdis = 20 * Math.abs( obj.scaleY );

if( point.x > obj.x - Wdis && point.x < obj.x + Wdis &&
point.y > obj.y - Hdis && point.y < obj.y + Hdis )
{
setState( MINER_STATE_RECV );
return true;
}
return false;
}
}
}
package classes
{
import flash.display.MovieClip;

public class myObject extends MovieClip
{
//定义一组物品类型的数据
public static var OBJECT_TYPE_GOLD_BIG:int = 0; //小金块
public static var OBJECT_TYPE_GOLD_SMALL:int = 1; //大金块
public static var OBJECT_TYPE_MONEY:int = 2; //钱袋
public static var OBJECT_TYPE_ROCK_1:int = 3; //石头1
public static var OBJECT_TYPE_ROCK_2:int = 4; //石头2
public static var OBJECT_TYPE_MONSTER_1:int = 5; //怪物1
public static var OBJECT_TYPE_MONSTER_2:int = 6; //怪物2

public static var OBJECT_TYPE_OBJECT_NUM:int = 5; //普通物品种类的个数
public static var OBJECT_TYPE_MONSTER_NUM:int = 2; //怪物种类数
public static var OBJECT_TYPE_NUM:int = 7; //所有物品种类数
protected var m_nType:int; //物体类型
public function myObject()
{
m_nType = OBJECT_TYPE_GOLD_BIG;
stop();
}
public function setType( type:int )
{
m_nType = type;
this.scaleX = 1;
this.scaleY = 1;
switch( m_nType )
{
case OBJECT_TYPE_GOLD_BIG:
this.scaleX = 2.5;
this.scaleY = 2.5;
this.gotoAndStop(1);
break;
case OBJECT_TYPE_GOLD_SMALL:
this.gotoAndStop(1);
break;
case OBJECT_TYPE_MONEY:
this.gotoAndStop(2);
break;
case OBJECT_TYPE_ROCK_1:
this.gotoAndStop(3);
break;
case OBJECT_TYPE_ROCK_2:
this.gotoAndStop(4);
break;
}
}
public function getType():int
{
return m_nType;
}
public function getScore():int
{
switch( m_nType )
{
case OBJECT_TYPE_GOLD_BIG:
return 500;
case OBJECT_TYPE_GOLD_SMALL:
return 50;
case OBJECT_TYPE_MONEY:
return 100;
case OBJECT_TYPE_ROCK_1:
return 1;
case OBJECT_TYPE_ROCK_2:
return 1;
case OBJECT_TYPE_MONSTER_1:
return 1;
case OBJECT_TYPE_MONSTER_2:
return 800;
}
return 0;
}
public function Logic()
{
}
}
}
package classes
{
import flash.display.MovieClip;

public class Monster extends myObject
{
private var m_bRight:Boolean = true;
public function Monster()
{
m_nType = OBJECT_TYPE_MONSTER_1;
stop();
}
override public function setType( type:int )
{
m_nType = type;
this.scaleX = 1;
this.scaleY = 1;
switch( m_nType )
{
case OBJECT_TYPE_MONSTER_1:
this.gotoAndStop(1);
break;
case OBJECT_TYPE_MONSTER_2:
this.gotoAndStop(2);
break;
}
}
override public function Logic()
{
if( m_bRight == true )
{
this.scaleX = 1;
this.x = this.x + 4;
if( this.x > 800 )
{
m_bRight = false;
}
}
else
{
this.scaleX = -1;
this.x = this.x - 4;
if( this.x < 380 )
{
m_bRight = true;
}
}
}
}
}
...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧