Я занимаюсь разработкой приложения для настольных и мобильных устройств и хотел бы использовать одну и ту же кодовую базу для каждой сборки.
Я хочу использовать cacheAsBitmapMatrix
на некоторых моих экранных объектах, но cacheAsBitmapMatrix
выдает ошибку, если он включен в приложение AIR с профилем устройства, отличным от mobileDevice или extendedMobileDevice .
было бы идеально что-то вроде следующего:
if (cacheAsBitmapMatrix.isSupported)
myDisplayObject.cacheAsBitmapMatrix = new Matrix();
обновить с помощью try / catch:
try {myDisplayObject.cacheAsBitmapMatrix = new Matrix();}
catch(error:Error) {}
finally {myDisplayObject.cacheAsBitmap = true;}
обновление:
за исключением телевизионных профилей, это должно также работать, чтобы различать мобильные и настольные системы:
//Resoslve Profile
if (Capabilities.os.indexOf("Windows") > -1 || Capabilities.os.indexOf("Mac") > -1 || Capabilities.os.indexOf("Linux") > -1)
trace("Desktop Profile");
else
trace("Mobile Profile");
обновление 2:
это кажется самым простым способом, и, возможно, наиболее распространенным способом определения профиля во время выполнения является вызов:
NativeWindow.isSupported;
из flash.display.NativeWindow документация:
Поддержка профиля AIR: эта функция
поддерживается на всех рабочих столах
системы, но не поддерживается на
мобильные устройства или AIR для телевизионных устройств.
Вы можете проверить поддержку во время выполнения
на настольных устройствах, использующих
Свойство NativeWindow.isSupported. Увидеть
Поддержка AIR Profile для более
информация о поддержке API
по нескольким профилям.
обновление 3:
при тестировании на симуляторе BlackBerry PlayBook была поддержана NativeWindow. Я не проверял это на устройстве, чтобы узнать, поддерживается ли оно только на симуляторе или нет. С тех пор я начал использовать следующее, чтобы определить разницу между мобильными и настольными профилями:
if (
(Capabilities.os.toLowerCase().indexOf("mac") == -1) &&
(Capabilities.os.toLowerCase().indexOf("windows") == -1) &&
(Capabilities.os.toLowerCase().indexOf("linux") == -1)
)
deviceIsMobile = true;