Проблема:
Создал ActionScript-проект в Flash Builder 4.6, подключил сорцы away3d 4.0, но при запуске даже элементарных примеров с away3d.com получаю пустой экран и ошибку (если установлен отладочный Flash Player):
Error #2044: Необработанный ErrorEvent:. text=Error #3702: Класс Context3D недоступен.
Решение:
Открыть html-шаблон, который используется для запуска проекта, и установить в нем параметр wmode равным "direct" в JavaScript-коде создания swf-объекта:
<script type="text/javascript">
// For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection.
var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";
// To use express install, set to playerProductInstall.swf, otherwise the empty string.
var xiSwfUrlStr = "${expressInstallSwf}";
var flashvars = {};
var params = {wmode: "direct"};
params.quality = "high";
params.bgcolor = "${bgcolor}";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "${application}";
attributes.name = "${application}";
attributes.align = "middle";
swfobject.embedSWF(
"${swf}.swf", "flashContent",
"${width}", "${height}",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
// JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
Это включит аппаратное 3D-ускорение. Предыдущие версии библиотеки работали с другими wmode`ами (transparent, opaque), что, конечно, давало проигрыш в производительности, но всё же. У wmode=direct есть одна особенность: объекты View3D всегда располагаются под остальным 2D-контентом, независимо от порядка их добавления в контейнер вызовом addChild и от индекса при добавлении с помощью addChildAt. Так что нужно быть осторожным, чтобы, например, случайно не залить 3d-сцену поверх как-нибудь заливкой.
Комментариев нет:
Отправить комментарий