我有一个 Flash 应用程序需要 Flash 版本 10.0 才能运行。我想添加 Flash 10.2 中引入的本机鼠标光标,但我不想要求所有用户都升级,并且我不想编译我的应用程序的两个单独版本。
有什么方法可以在运行时检测光标是否可用,然后使用它们?
看起来如果您只针对 Flash 10.0 进行编译,它会将 SWF 版本标头标记为“10”,并且您无法访问新的 API。如果您针对 Flash 10.2 进行编译,它会标记版本标头“11”,并且您可以访问新的 API,但无法再在旧的 Flash 播放器中运行(在加载 Flex 框架时,我会遇到疯狂的错误,例如:
VerifyError: Error #1053: Illegal override of play2 in org.osmf.net.dynamicstreaming.DynamicNetStream.
ReferenceError: Error #1065: Variable _379fa43169660c76f131cadc0adfbfe8f347bd31d3ceec26a9cb2a56f0dda1f9_flash_display_Sprite is not defined.
像这样的东西应该有效:
var bitmapDatas:Vector.<BitmapData> = new <BitmapData>[new BitmapData(32,32,false, 0xFF0000)];
var MouseCursorDataClass:Class;
try {
MouseCursorDataClass = getDefinitionByName("flash.ui.MouseCursorData") as Class;
}catch(e) {}
if(MouseCursorDataClass) {
var cursorData = new MouseCursorDataClass();
cursorData.data = bitmapDatas;
Mouse["registerCursor"]("test", cursorData);
Mouse.cursor = "Xmas";
}else {
var customCursor=new Bitmap(bitmapDatas[0]);
addChild(customCursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCursor);
}
function moveCursor(e) {
customCursor.x=mouseX;
customCursor.y=mouseY;
}
事实上,MouseCursorData 对象已创建并且在 10.2 中有效,但由于某种原因,浏览器在尝试调用 Mouse.registerCursor() 时崩溃。不过,我发布的是 10.0,所以如果您发布的是 10.2,那么整个事情可能在 10 和 10.2 上都能正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)