我正在學習成爲一名遊戲設計師,現在我的Flash遊戲出現了一些問題。如何從一個類AS3中調用函數
遊戲有一個計數器類,有一個擴展計數器的分數類。它被添加到我的PlayScreenA類的舞臺中。
定時器以數字開頭,每減少24幀。但在我的英雄類中,我可以拿起一些硬幣,並且硬幣會增加我的分數上的時間。
問題是:我可以說在我的英雄類中執行計數器類中的addToValue函數?
代碼件: 創建我的PlayScreenA類分數:
private var myTime:Score = new Score();
private function create_time(){
myTime.x = 800;
myTime.y = 50;
addChild(myTime);
}
Counter類:
package
{
import flash.display.MovieClip;
public class Counter extends MovieClip
{
public var currentValue:Number;
public function Counter()
{
reset();
}
public function addToValue(amountToAdd:Number):void
{
currentValue = currentValue + amountToAdd;
updateDisplay();
}
public function subToValue(amountToSub:Number):void
{
currentValue = currentValue - amountToSub;
updateDisplay();
}
public function reset():void
{
currentValue = 20;
updateDisplay();
}
public function updateDisplay():void
{
}
}
}
評分等級:
package
{
import flash.text.TextField;
import flash.events.Event;
public class Score extends Counter
{
protected var _timeCounter:int;
public function Score()
{
super();
addEventListener(Event.ENTER_FRAME, onUpdate);
}
override public function updateDisplay():void
{
super.updateDisplay();
scoreDisplay.text = currentValue.toString();
}
protected function onUpdate(e:Event):void
{
_timeCounter++;
trace(currentValue);
if (_timeCounter == 24)
{
this.subToValue(1);
_timeCounter = 0;
}
}
}
}
我的英雄類,其中的一塊我需要調用該函數:
for(var i:int; i<collisionList.length;i++)
{
var $collision:platform_tile = collisionList[i];
if($hasCollided = hitbox.hitTestObject($collision.hitBox) && $collision.alpha<0.8 && $collision.alpha>0.6)
{
$collision.alpha=0;
$collision.visible = false;
//Here is where I want to call my subToValue function!
break;
}
工作得如此甜蜜! 非常感謝。 – 2012-07-24 04:00:35
我很高興你能用它來處理這麼幾行代碼。現在我只是一名初學者遊戲程序員,如果你有時間給新手,我會很感激你是否可以看看我的整個代碼,並指出我做得很差,以及如何改進我的邏輯下一個工作。我更喜歡通過電子郵件發送文件併發送文件,但我可以用任何其他方式聯繫。 (遊戲甚至還沒有完成,但這是我的主要問題,我不認爲我現在有任何其他困難時間) 我的電子郵件是[email protected] 非常感謝! – 2012-07-24 04:11:16