Этап доступа из «основного» класса - PullRequest
1 голос
/ 25 августа 2009

У меня есть следующий ActionScript:

package {
    import flash.display.Sprite;

    public class Application extends Sprite {
        public function Application(){
            width=1000;
            height=500;
        }
    }
}

Который я компилирую с mxmlc Application.as. Я заметил, что Application - это не объект сцены, как я думал, потому что ширина и высота сцены не меняются.

Как получить доступ к сцене с Application?

1 Ответ

1 голос
/ 25 августа 2009

Вы слегка не понимаете, что означает «Сцена». Этап является ссылкой самого низкого уровня на область отображения, с которой Flash должен работать, поэтому его размер в конечном итоге определяется контейнером , в котором выполняется Flash.

Таким образом, при просмотре содержимого в автономном Flash-проигрывателе, изменении размера рабочей области вы изменяете размер самого проигрывателя, а при просмотре содержимого, встроенного в HTML-страницу, изменение размера рабочей области происходит только в том случае, если браузер изменяет размер элемента. Flash встроен в (например, через Javascript). Аналогично, если ваша флэш-память была встроена в приложение .NET, логика .NET контролирует размер рабочей области и т. Д.

По этим причинам, как правило, невозможно изменить размер этапа из логики приложения, если контейнер не предоставляет способ сделать это. Большинство браузеров действительно предоставляют такую ​​функциональность через JavaScript, поэтому в браузере вы обычно можете изменить размер сцены, вызывая JS-хуки, чтобы изменить размер элемента вставки Flash. В отличие от этого автономный игрок не выставляет таких хуков, поэтому изменение размера сцены невозможно (за исключением того, что вы можете переключаться в полноэкранный режим).

В качестве примечания, как отмечает Джоэл Хукс, вы можете включить в свой проект заявление в виде: [SWF(width=1000,height=500)]. Это приводит к тому, что скомпилированный SWF-файл содержит метаданные для указанного размера. Эти метаданные, однако, являются лишь предположениями, и от контейнера зависит, чтить их или нет. Автономный проигрыватель будет учитывать такие метаданные (для начального размера контейнера), но браузеры будут игнорировать его полностью.

...