私はゲームデザイナーになるために勉強していますが、現在、フラッシュゲームでいくつかの問題が発生しています。
ゲームにはカウンタークラスがあり、カウンターを拡張するスコアクラスがあります。PlayScreenAクラスのステージに追加されます。
タイマーは数字で始まり、24フレームごとに減少します。しかし、私のヒーロークラスでは、いくつかのコインを拾うことができ、そのコインは私のスコアの時間を増やします。
問題は、HeroクラスでCounterクラス内でaddToValue関数を実行するように言うにはどうすればよいですか?
コードの一部:PlayScreenAクラスでスコアを作成する:
private var myTime:Score = new Score();
private function create_time (){
myTime.x = 800;
myTime.y = 50;
addChild(myTime);
}
カウンタークラス:
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;
}