나는 avoider 게임 자습서를 따르고 있으며 클래스의 모든 부분에서 업데이트 할 가치가없는 것처럼 보입니다. 나는 그것이 10 씩 증가하지만, 'updateDisplay'의 'CurrentValue에'내부의 추적에 의해 업데이트하고 'addToValue'의 'CurrentValue에'내부에 대한 추적을 실행 할 때마다AS3에서 변수 업데이트
package
{
import flash.display.Sprite;
import flash.text.TextField
import flash.text.TextFormat
public class Score extends Sprite
{
public var scoreDisplay:String;
public var currentValue:int;
public function Score()
{
updateDisplay()
}
public function updateDisplay():void
{
scoreDisplay = currentValue.toString();
var format:TextFormat = new TextFormat();
format.size = 25;
format.font = "Verdana"
var myText:TextField = new TextField();
myText.defaultTextFormat = format;
myText.text = scoreDisplay;
myText.background = true;
myText.autoSize
myText.width = 50;
myText.height = 35;
addChild(myText)
myText.x = 340
myText.y = 10
myText.mouseEnabled = false
}
public function addToValue(amountToAdd:Number):void
{
currentValue = currentValue + amountToAdd;
}
}
}
는 항상 내가 절대적으로 할 수있는 0의 값을 갖는다 'currentValue'가 다른 것을 업데이트하지 않는 이유를 파악하지 못합니다.
EDIT 1
package
{
import flash.display.Sprite;
public class Start extends Sprite
{
public var game:Game;
public var gameover:GameOver;
public var background:Sprite;
public function Start()
{
background = new Sprite
background.graphics.beginFill(0xC0C0C0)
background.graphics.drawRect(0, 0, 400, 300)
background.graphics.endFill();
addChild(background)
var score:Score = new Score()
addChild(score)
game = new Game();
game.addEventListener(AvatarEvent.DEAD, startOver);
addChild(game);
}
public function startOver(avatarEvent:AvatarEvent):void
{
game.removeEventListener(AvatarEvent.DEAD, startOver);
gameover = new GameOver();
gameover.addEventListener(NavigationEvent.RESTART, requestRestart);
removeChild(game)
addChild(gameover);
}
private function requestRestart(e:NavigationEvent):void
{
restartGame();
}
public function restartGame():void
{
gameover.removeEventListener(NavigationEvent.RESTART, requestRestart);
game = new Game();
game.addEventListener(AvatarEvent.DEAD, startOver);
addChild(game);
removeChild(gameover);
}
}
}
addToValue
호 updateDisplay
편집 2
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.Timer;
import Score;
public class Game extends Sprite
{
public var army:Array;
public var gameTimer:Timer;
public var player:Player;
public var background:Sprite;
private var instanceScore:Score
public function Game()
{
army = new Array();
var newenemy:Enemy = new Enemy(100, -15);
army.push(newenemy);
addChild(newenemy);
player = new Player();
addChild(player);
player.x = mouseX;
player.y = mouseY;
gameTimer = new Timer(20);
gameTimer.addEventListener(TimerEvent.TIMER, move);
gameTimer.addEventListener(TimerEvent.TIMER, onTick);
gameTimer.start();
instanceScore = new Score();
}
private function move(timerEvent:TimerEvent):void
{
player.x = mouseX;
player.y = mouseY;
for each (var enemy:Enemy in army)
{
enemy.moveDownABit();
if (player.hitTestObject(enemy))
{
gameTimer.stop();
dispatchEvent(new AvatarEvent(AvatarEvent.DEAD));
}
}
}
public function onTick(e:Event):void
{
if (Math.random() < .1)
{
var randomX:Number = Math.random() * 400;
var newEnemy:Enemy = new Enemy(randomX, -15);
army.push(newEnemy);
addChild(newEnemy);
instanceScore.addToValue(10)
var score:Score = new Score()
addChild(score)
}
}
}
}
이 '점수'클래스를 사용하는 코드를 게시하십시오. –
업데이트 됨.코드가 실행되고 오른쪽 상단에 "0"이 표시됩니다. – windigo
게시 한 코드에서 'score.addToValue'가 호출되지 않습니다. –