как сделать так, чтобы объекты во флэш-SWF, которые частично находятся вне сцены, были видны и не были обрезаны - PullRequest
0 голосов
/ 14 сентября 2009

У меня есть флеш-плеер AS3 9 swf с размером сцены 500x100, на сцене у меня есть несколько объектов, которые выходят за границу сцены, например, круг диаметром 50 пикселей при 490,90.

Что происходит в настоящее время, когда я встраиваю swf в HTML, так это то, что круг обрезается, я бы хотел, чтобы он все еще был полностью виден, даже если он находится за пределами области сцены. Это имеет решающее значение для поведения этого конкретного приложения, потому что мне нужна мышь, чтобы иметь доступ к элементам HTML под флэш-фильм. Если я просто сделаю сцену больше, круг будет виден, но события мыши пойманы прозрачной областью вспышки.

Если я сам просмотрю swf в браузере, например: localhost / test.swf, кружок не будет поврежден. Я помню, что во флэш-памяти 8 лет назад была совершенно противоположная проблема, когда я не хотел, чтобы эти объекты за сценой были видны, но они были, поэтому я уверен, что это возможно, но я не могу получить правильную комбинацию параметров чтобы код для вставки работал правильно.

Я использую swfobject 2 для встраивания, но я попробовал другие методы и получил те же результаты.

Любые мысли или предложения будут высоко оценены:)

Ответы [ 2 ]

1 голос
/ 14 сентября 2009

Ваша проблема не в рабочей области Flash, а в размере контейнера браузера, в который встроен Flash. Трудно объяснить без рисунка, но я сделаю снимок:

Когда вы создаете SWF, вы выбираете размер в инструменте авторинга. Назовите этот размер «Размер сцены». Позже, когда вы встраиваете свой SWF в браузер, вы определяете размер в HTML - назовите это «Размер контейнера». Обычно два размера будут равны, но они не должны быть одинаковыми.

Здесь важно то, что при просмотре SWF-файла в веб-браузере размер рабочей области практически не имеет значения (* см. Примечание ниже) - Flash будет отображать все, независимо от того, находится он внутри или вне размера рабочей области. Размер контейнера, скорее, определяет размеры визуальной области вашего SWF-файла в браузере. Это то же самое, что и определение <div> в HTML - когда вы встраиваете SWF-файл определенного размера, вы говорите веб-браузеру выделять только такую ​​область для Flash, а не позволять Flash отображать что-либо за пределами этой области.

Теперь, учитывая все вышесказанное, решение вашей проблемы простое - просто вставьте Flash в больший контейнер. Если это решит вашу проблему, тогда хорошо. Однако я предполагаю, что причина, по которой вы спрашиваете, заключается в том, что вы хотите, чтобы графика вашего SWF-файла выглядела расширяющейся за пределы его контейнера. Если это так, то единственный способ сделать это - встроить ваш Flash с прозрачным фоном в большой контейнер, который абсолютно позиционирован с помощью CSS, чтобы наложить остальную часть вашего HTML-контента. Это довольно сложная тема, но поищите учебники по "wmode=transparent", и они должны помочь вам начать.


примечание: (В этом ответе я предполагаю, что вы встраиваете с scaleMode, установленным на "noScale" - если нет, то, вероятно, так и должно быть, если вы не понимаете, почему нет.)

0 голосов
/ 01 октября 2009

Ответ выше хорош, но другой функцией, которую вы можете использовать (после «открытия» containerSize), является свойство salign. Это свойство позволяет вам настроить местоположение SWF в этом контейнере.

http://help.globalscape.com/help/cutehtmlpro5/Flash_Support_Parameters.htm

...