Заблокировать / запретить загруженным SWF-файлам доступ к рабочей области загрузчика - PullRequest
1 голос
/ 29 сентября 2011

У меня есть два SWF: загрузочный SWF и загруженный SWF. Мне нужно добавить Loaded SWF в иерархию отображения, но я не хочу предоставлять ему свободный доступ к сцене. Например, он может попытаться изменить scaleMode, и я не хочу, чтобы это произошло.

Какие есть хорошие методы для ограничения доступа загруженного контента к сцене? Я могу, например, захотеть разрешить ему доступ к stageWidth и stageHeight, но не scaleMode или align. Предложения?

РЕДАКТИРОВАТЬ: Дополнительные ограничения

Я не могу ничего изменить в загруженном SWF. Оба SWF-файла находятся в изолированной программной среде с локальной файловой системой. Эти SWF-файлы - это Flash Player 10, ActionScript 3, выполненный во Flash Professional. Не AIR, не Flex.

Я бы хотел иметь возможность реализовать прокси-класс или метод получения, чтобы каким-то образом перехватывать вызовы на сцену, но я не верю, что есть какой-либо способ. Например, я не верю, что вы можете создать подкласс класса Stage и использовать этот подкласс вместо обычного объекта Stage, на который ссылается свойство stage во всех мувиклипах. Свойство stage доступно только для чтения, поэтому загрузчик не может выполнять перекрестные сценарии для указания на что-то другое.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Одним из решений может быть переопределить средство получения этапа в вашем основном SWF-файле и таким образом предотвратить доступ к нему загруженного SWF-файла. Однако вам придется вернуть действительный объект, который имитирует сцену, чтобы предотвратить ошибки в загруженном SWF, если он попытается получить доступ к сцене.

public override function get stage():Stage{
        trace("trying to access stage")
        return new Object() as Stage
}
1 голос
/ 29 сентября 2011

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

Если вы когда-нибудь захотите разрешить доступ, вам нужно явно разрешить егоиспользование Security.allowDomain()

Если вы хотите, чтобы дочерний SWF-файл имел доступ к некоторым свойствам, но не к другим, вы можете использовать мост песочницы (сложный).Или вы можете попросить ребенка SWF «объявить», что он хочет сделать.Например, добавьте свойство, такое как requiredStageWidth, к дочернему элементу.Затем попросите родительский объект проверить наличие этого свойства - если оно есть, задайте ширину этапа, в противном случае ничего не делайте.

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