Увеличить глобальную переменную по клику во flash, actioncript 3 - PullRequest
0 голосов
/ 24 мая 2010

Создание флеш-страницы, которая может циклически перемещаться по этим трем изображениям при щелчке мышью.По некоторым причинам локальные изменения в подсчете не отражаются на глобальных.Я попытался _global, но синтаксис был странным и дал мне ошибки.Как мне это реализовать?

import flash.events.Event;

var images:Array = ["images/image.jpg", "images/image2.jpg", "images/image3.jpg"];
var count:int = 0;

forward.addEventListener(MouseEvent.CLICK, loadPhoto);


function loadPhoto(evt:Event){

    if(count>2){
        count = 0;
    }

    trace(count);
    imageFrame.source = images[count];

    count++;

}

Упрощенной версией проблемы будет получение трассировки для вывода количества нажатий.

import flash.events.Event;

var count:int = 0;

forward.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(evt:Event)
{
    trace(count);
    count++; 
}

Ответы [ 3 ]

3 голосов
/ 24 мая 2010

Я думаю, что ваша проблема - одна из задач.Попробуйте вместо этого:

import flash.events.Event;

var images:Array = ["images/image.jpg", "images/image2.jpg", "images/image3.jpg"];
var count:int = 0;

forward.addEventListener(MouseEvent.CLICK, clickHandler);


function clickHandler(evt:Event)
{
    loadPhoto(); // Notice, this is calling a function already defined on root!
}

function loadPhoto()
{
    trace(count);
    // Use modulous to deal with this type of behavior -- it is easier in the end.
    imageFrame.source = images[count%images.length];

    count++; // Count should be within scope here.
}
1 голос
/ 24 мая 2010

Есть ли вероятность того, что код находится во фрейме, который выполняется несколько раз? (потому что вы где-то пропустили стоп (), например)

Если это так, у вас может быть проблема, которую вы не заметили и которая вызывает это странное поведение. Простой способ проверить, происходит ли это, - добавить trace("test") после объявления count (или до, но поместить его в этот скрипт кадра).

1 голос
/ 24 мая 2010

Это должно работать нормально. Я предполагаю, по тому, как написан код, это на временной шкале, а не в классе. Это не должно иметь никакого значения -

Однако попробуйте ссылаться на переменную count в вашей функции с помощью this

Это может выглядеть примерно так:

function loadPhoto(evt:Event){

    if(this.count>2){
        this.count = 0;
    }

    trace(this.count);
    imageFrame.source = images[this.count];

    this.count++;

}

Это более многословно и педантично, но ваш исходный код должен работать просто отлично. Я мог бы добавить - этот код не использует переменную 'count' вне функции, альтернативу объявлению ее - проблема, счетчик равен всегда '0', когда функция запущена?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...