Размер объекта Flex отличается, когда я добавляю ANE

У меня проблема, когда я добавляю ANE (который я создал сам) в мобильный проект Flex.

Проблема в том, что размер объектов отличается от размера до добавления ANE. Никогда не пользовался этим ANE, только добавил.

Вот изображение перед добавлением ANE:

введите описание изображения здесь

И изображение после добавления ANE:

введите описание изображения здесь

Как видите, размер всего приложения разный. Вы знаете, в чем может быть проблема?

заранее спасибо

** Обновить информацию **

Код на ios:

#import "FlashRuntimeExtensions.h"

FREContext eventContext;

FREObject init(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
    eventContext = ctx;

    NSLog(@"init");

    return NULL;
}


void CameraExtContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctionsToTest, const FRENamedFunction** functionsToSet)
{
    NSLog(@"camera ext context initializer");
    *numFunctionsToTest = 1;

    FRENamedFunction* func = (FRENamedFunction*) malloc(sizeof(FRENamedFunction) * *numFunctionsToTest);

    func[0].name = (const uint8_t*) "init";
    func[0].functionData = NULL;
    func[0].function = &init;

    *functionsToSet = func;
}

void CameraExtensionUniversalInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet, FREContextFinalizer* ctxFinalizerToSet)
{
    NSLog(@"Camera extension initializer");
    *extDataToSet = NULL;
    *ctxInitializerToSet = &CameraExtContextInitializer;
}

Код библиотеки в AS:

package com.xxx.Controller
{   
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import flash.events.StatusEvent;
    import flash.external.ExtensionContext;

    public class ReaderDeviceExtensionController extends EventDispatcher
    {

        private static var _instance:ReaderDeviceExtensionController;
        private var extContext:ExtensionContext;

        public function ReaderDeviceExtensionController(enforcer:SingletonEnforcer)
        {
            super();
            extContext = ExtensionContext.createExtensionContext( "com.xxx.Controller", "" );

            if ( !extContext ) {
                throw new Error( "Reader device native extension is not supported on this platform." );
            }

        }

    public static function get instance():ReaderDeviceExtensionController {
        if ( !_instance ) {
            _instance = new ReaderDeviceExtensionController( new SingletonEnforcer() );
            _instance.init();
        }

        return _instance;
    }

    public function dispose():void { 
        extContext.dispose(); 
    }

    private function init():void {
        extContext.call( "init" );
    }
}
}

class SingletonEnforcer {

}

Extension.xml:

<extension xmlns="http://ns.adobe.com/air/extension/3.1"> 
    <id>com.xxx.Controller</id> 
    <versionNumber>0.0.1</versionNumber> 
    <platforms>
        <platform name="iPhone-ARM"> 
            <applicationDeployment> 
                <nativeLibrary>libTestSimpleAne.a</nativeLibrary>
                <initializer>CameraExtensionUniversalInitializer</initializer>
            </applicationDeployment>
        </platform>
    </platforms> 
</extension>

Я создаю ANE с помощью следующей команды ADT:

adt -package -target ane MWCameraNativeExtension.ane extension.xml -swc NativeDevicePluginForCamera.swc -platform iPhone-ARM -C ios .

Код моего приложения на Flex:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="HTMLMainContent">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:Label x="346" y="290" fontSize="16" paddingLeft="20" text="HI HI HI"/>
</s:View>

person A.Vila    schedule 21.02.2013    source источник
comment
Не зная, что делает ваш код ANE; это кажется невозможным ответить. Я не ожидал, что ANE повлияет на размер HTMLLoader или StageWebView.   -  person JeffryHouser    schedule 21.02.2013
comment
Спасибо за ваш ответ. Это не htmlloader или stagewebview, это просто представление с текстом (извините за путаницу). Я обновляю вопрос со всей информацией. Я упрощаю ANE, и происходит то же самое. Я думаю, что, возможно, я забыл что-то сделать в ANE, потому что я создал три разных ANE, и всегда происходит следующее ...   -  person A.Vila    schedule 22.02.2013
comment
Кажется, что когда я добавляю ANE, он масштабирует до 50% все компоненты, которые я помещаю с абсолютной шириной, высотой, положением ... Когда я использую процент, кажется, что все работает нормально. Но я не знаю, как это решить. Спасибо   -  person A.Vila    schedule 22.02.2013


Ответы (1)


Это работает на iPad 3? Я предполагаю, что вы случайно разблокируете разрешение сетчатки, когда используете собственное расширение.

SDK для iOS по умолчанию, который использует Flash Builder / packager, является более старой версией, которая не поддерживает разрешение Retina iPad 3. Поэтому, когда вы упаковываете приложение без собственного расширения, вы получаете разрешение iPad 2, а iOS масштабирует все. Когда вы используете собственное расширение и указываете более новый SDK для iOS, оно автоматически будет использовать собственное разрешение устройства.

Попробуйте отследить stage.stageWidth и stage.stageHeight с включенным расширением и без него. Также проверьте свойства проекта -> Flex Build Packaging -> Apple iOS -> Native Extensions -> Apple iOS SDK. Если это заполнено, то, скорее всего, у вас проблема, которую я описал.

person Nathan    schedule 22.02.2013