Actionscript: Как я могу создать счетчик, который регистрирует hitTestObject и показывает счет на главной сцене? - PullRequest
0 голосов
/ 27 апреля 2019

Моя игра подсчитывает количество попаданий в объект и переносит пользователя на страницу выигрыша или проигрыша. Как мой hitTestObject может подсчитать количество попаданий при отображении числа на главной сцене? Если пользователь нажимает на «друга» 5 раз, я хочу, чтобы он играл на слое «youWin», а если он один раз наносил «битый», я хочу, чтобы он играл на слое «youLose». (Пожалуйста, помогите, это для моего финального проекта, и я почти закончил) Спасибо! :)

stop();

addEventListener(Event.ENTER_FRAME,fishHit);

function fishHit(e:Event){
    if (theFish.hitTestObject(biter)){
        removeEventListener(Event.ENTER_FRAME,fishHit);
        gotoAndPlay("youLose");
}
}

var theFish:fish = new fish();
theFish.x = 200
theFish.y = 260
addChild(theFish);

for (var which=0; which<5; which++){
    var biter:shark=new shark();
    biter.x=1400;
    biter.y=int(Math.random()*660.0+30.0);
    addChild(biter);
}

for (var what=0; what<5; what++){
    var friend:starfish=new starfish();
    friend.x=1400;
    friend.y=int(Math.random()*660.0+30.0);
    addChild(friend);
}

var counter : int = 0;
addEventListener(Event.ENTER_FRAME,winner);

function winner (e:Event){
    if(theFish.hitTestObject(friend)) {
        counter +=  1
        scoreboard.score_text.text = counter;
        if(counter == 5)
            removeEventListener(Event.ENTER_FRAME,winner);
            gotoAndPlay("youWin");

    }
}

1 Ответ

1 голос
/ 28 апреля 2019

Вам нужно много обновлений в вашем коде, но я постараюсь скопировать и вставить ваш код с небольшими изменениями.Вы должны определить свои переменные вне цикла for, также вы должны добавить в массив несколько объектов, таких как «friends».

stop();

// arrays
var friends:Array = new Array();
var biters:Array = new Array();

var counter : int = 0;

var theFish:fish = new fish();
theFish.x = 200
theFish.y = 260
addChild(theFish);

for (var which=0; which<5; which++){
    var biter = new shark();
    biter.x=1400;
    biter.y=int(Math.random()*660.0+30.0);
    addChild(biter);

    // push it to the array
    biters.push(biter)
}

for (var what=0; what<5; what++){
    var friend = new starfish();
    friend.x=1400;
    friend.y=int(Math.random()*660.0+30.0);
    addChild(friend);

    // push it to the array
    friends.push(friend)
}

addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event){

// theFish vs biters
for (var i:int = 0; i < biters.length; i++){
    if (theFish.hitTestObject(biters[i])){
        removeEventListener(Event.ENTER_FRAME, enterFrame);
        gotoAndPlay("youLose");
}
}

// theFish and friends
for (i = 0; i < friends.length; i++){
    if(theFish.hitTestObject(friends[i])) {

        // remove this friend so it does not increase counter
        friends.splice(i,1);
        counter +=  1
        scoreboard.score_text.text = counter;
        if(counter == 5){
            removeEventListener(Event.ENTER_FRAME, enterFrame);
            gotoAndPlay("youWin");
         }
    }
}
}
...