常用的AS3代码

      常用的一些代码段,摘自AS3游戏编程大学(ActionScript 3.0 Game Programming University),如果转载,请注明出处--Arthur。
1、检测碰撞
addEventListener(Event.ENTER_FRAME, checkCollision);
function checkCollision(event:Event) {
//hitTestPoint检测对象与某点是否发生碰撞
if (crescent.hitTestPoint(mouseX, mouseY, true)) {
  messageText1.text = "hitTestPoint: YES";
} else {
  messageText1.text = "hitTestPoint: NO";
}
// move star with mouse
star.x = mouseX;
star.y = mouseY;
//hitTestObject检测两物体是否碰撞
if (star.hitTestObject(crescent)) {
  messageText2.text = "hitTestObject: YES";
} else {
  messageText2.text = "hitTestObject: NO";
}
}

2、使用文本框
//创建基本格式
var myFormat:TextFormat = new TextFormat();
myFormat.font = "Arial";
myFormat.size = 24;
myFormat.bold = true;
//创建样式表
var myStyleSheet:StyleSheet = new StyleSheet();
myStyleSheet.setStyle("A",{textDecoration: "underline", color: "#0000FF"});
var myLink:TextField = new TextField();
//使用格式化文本
myLink.defaultTextFormat = myFormat;
//文本使用样式表
myLink.styleSheet = myStyleSheet;
myLink.selectable = false;
myLink.htmlText = "Click <A HREF='event:testing'>here</A>";
myLink.x = 80;
myLink.y = 190;
myLink.width = 400;
myLink.height = 30;
addChild(myLink);
//添加文本单击事件
addEventListener(TextEvent.LINK, textLinkClick);
function textLinkClick(event:TextEvent) {
trace(event.text);
}

3、使用自定义鼠标
Mouse.hide();
addEventListener(Event.ENTER_FRAME, moveCursor);
arrow.mouseEnabled = false;
function moveCursor(event:Event) {
arrow.x = mouseX;
arrow.y = mouseY;
}

4、简单计数器
var timeDisplay:TextField = new TextField();
addChild(timeDisplay);
var startTime:int = getTimer();
addEventListener(Event.ENTER_FRAME, showClock);
function showClock(event:Event) {
var timePassed:int = getTimer()-startTime;
var seconds:int = Math.floor(timePassed/1000);
var minutes:int = Math.floor(seconds/60);
seconds -= minutes*60;
var timeString:String = minutes+":"+String(seconds+100).substr(1,2);
timeDisplay.text = timeString;
}

5、拖动影片
mascot.addEventListener(MouseEvent.MOUSE_DOWN, startMascotDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
mascot.addEventListener(Event.ENTER_FRAME, dragMascot);
var clickOffset:Point = null;
function startMascotDrag(event:MouseEvent) {
clickOffset = new Point(event.localX, event.localY);
}
function stopMascotDrag(event:MouseEvent) {
clickOffset = null;
}
function dragMascot(event:Event) {
if (clickOffset != null) { // must be dragging
  mascot.x = mouseX - clickOffset.x;
  mascot.y = mouseY - clickOffset.y;
}
}

6、使用动态绘图函数
// 画(100,200)到(150,250)的直线
this.graphics.lineStyle(2,0x000000);
this.graphics.moveTo(100,200);
this.graphics.lineTo(150,250);
// 画曲线
this.graphics.curveTo(200,300,250,250);
// 画矩形、圆角矩形
this.graphics.drawRect(50,50,300,250);
this.graphics.drawRoundRect(40,40,320,270,25,25);
// 画圆、椭圆
this.graphics.drawCircle(150,100,20);
this.graphics.drawEllipse(180,150,40,70);
// 填充圆
this.graphics.beginFill(0x333333);
this.graphics.drawCircle(250,100,20);
this.graphics.endFill();

7、捕捉键盘输入
// 显示按下的键
var keyboardText:TextField = new TextField();
keyboardText.selectable = false;
addChild(keyboardText);
//用于显示spacbar是否按下
var spacebarText:TextField = new TextField();
spacebarText.selectable = false;
spacebarText.y = 30;
addChild(spacebarText);
spacebarText.text  = "Spacebar is UP.";
var spacebarPressed:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownFunction);
function keyDownFunction(event:KeyboardEvent) {
keyboardText.text = "Key Pressed: "+String.fromCharCode(event.charCode);
if (event.charCode == 32) {
  spacebarPressed = true;
  spacebarText.text = "Spacebar is DOWN.";
}
}
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpFunction);
function keyUpFunction(event:KeyboardEvent) {
if (event.charCode == 32) {
  spacebarPressed = false;
  spacebarText.text  = "Spacebar is UP.";
}
}


8、加载HTML页面变量(difficultyLevel变量由HTML'flashvars'设置)
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
var diffLevel:String = paramObj["difficultyLevel"];
var messageString = "difficultyLevel: "+paramObj["difficultyLevel"];
messageString += "\n";
messageString += "puzzleFile: "+paramObj["puzzleFile"];
messageText.text = messageString;

9、加载外部XML格式文本
var xmlURL:URLRequest = new URLRequest("LoadingData.xml");
var xmlLoader:URLLoader = new URLLoader(xmlURL);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event) {
var dataXML  = XML(event.target.data);
trace(dataXML.question.text);
trace(dataXML.question.answers.answer[0]);
trace(dataXML.question.answers.answer[0].@type);
}

10、建立预加载动画
stop();
addEventListener(Event.ENTER_FRAME, loadProgress);
function loadProgress(event:Event) {
// 获得总字节数和已经加载的字节数
var movieBytesLoaded:int = this.root.loaderInfo.bytesLoaded;
var movieBytesTotal:int = this.root.loaderInfo.bytesTotal;
// 转化为MB
var movieKLoaded:int = movieBytesLoaded/1024;
var movieKTotal:int = movieBytesTotal/1024;
progressText.text = "Loading: "+movieKLoaded+"K/"+movieKTotal+"K";
if (movieBytesLoaded >= movieBytesTotal) {
  removeEventListener(Event.ENTER_FRAME, loadProgress);
  gotoAndStop(2);
}
}

11、动态建立按钮元件
函数:SimpleButton(upState:DisplayObject = null, overState:DisplayObject = null,

downState:DisplayObject = null, hitTestState:DisplayObject = null)
var mySimpleButton:SimpleButton = new SimpleButton(new ButtonUp(), new ButtonOver(), new

ButtonDown(), new ButtonHit());
mySimpleButton.x = 450;
mySimpleButton.y = 250;
addChild(mySimpleButton);
mySimpleButton.addEventListener(MouseEvent.CLICK, clickSimpleButton);
function clickSimpleButton(event:MouseEvent) {
trace("You clicked the simple button!");
}

12、使用声音
button1.addEventListener(MouseEvent.CLICK, playLibrarySound);
button2.addEventListener(MouseEvent.CLICK, playExternalSound);
// 加载外部声音
var sound2:Sound = new Sound();
var req:URLRequest = new URLRequest("PlayingSounds.mp3");
sound2.load(req);
function playLibrarySound(event:Event) {
var sound1:Sound1 = new Sound1();
var channel:SoundChannel = sound1.play();
}
function playExternalSound(event:Event) {
sound2.play();
}

13、生成随机数
var random1:Number = Math.random();
trace("Random Number Between 0-0.9999: "+random1);
var random2:Number = Math.random()*100;
trace("Random Number Between 0-99.9999: "+random2);
var random3:Number = Math.floor(Math.random()*100);
trace("Random Integer Between 0-99: "+random3);
var random4:Number = Math.floor(Math.random()*100)+1;
trace("Random Integer Between 1-100: "+random4);

14、存储数据
var myLocalData:SharedObject = SharedObject.getLocal("mygamedata");
trace("Found Data: "+myLocalData.data.gameinfo);
myLocalData.data.gameinfo = "Store this.";

15、随机排列数组元素
// 创建有序的数组
var startDeck:Array = new Array();
for(var cardNum:int=0;cardNum<52;cardNum++) {
startDeck.push(cardNum);
}
trace("Unshuffled:",startDeck);
// 打乱数据
var shuffledDeck:Array = new Array();
while (startDeck.length > 0) {
var r:int = Math.floor(Math.random()*startDeck.length);
shuffledDeck.push(startDeck[r]);
startDeck.splice(r,1);
}
trace("Shuffled:", shuffledDeck);

16、获取环境信息
function showInfo(event:Event) {
var output:String = "";
output += "stageWidth: "+stage.stageWidth+"\n";
output += "stageHeight: "+stage.stageHeight+"\n";
output += "playerType: "+Capabilities.playerType+"\n";
output += "language: "+Capabilities.language+"\n";
output += "os: "+Capabilities.os+"\n";
output += "screenResolutionX: "+Capabilities.screenResolutionX+"\n";
output += "screenResolutionY: "+Capabilities.screenResolutionY+"\n";
output += "version: "+Capabilities.version+"\n";
output += "serverString: "+Capabilities.serverString+"\n";
messageText.text = output;
}
stage.scaleMode = StageScaleMode.EXACT_FIT;
addEventListener(Event.ENTER_FRAME,showInfo);

17、接受文本输入
myInput.addEventListener(KeyboardEvent.KEY_UP, checkForReturn);
function checkForReturn(event:KeyboardEvent) {
if (event.charCode == 13) {
  acceptInput();
}
}
function acceptInput() {
var theInputText:String = myInput.text;
trace(theInputText);
removeChild(myInput);
}

你可能感兴趣的:(游戏,编程,OS,UP,actionscript)