2011-07-05 15 views
2

我對Flex有很多經驗,我剛開始編寫我的第一個AIR應用程序,並希望儘可能多地使用Spark。s:WindowedApplication爲空,並且不初始化/顯示子組件

於是我開始枝條一個簡單的Hello World應用程序:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" backgroundColor="red" 
         initialize="initializeHandler(event)"> 

    <s:Label text="Hello World"/> 

    <s:Button label="Test" initialize="onButtonInitialize()"/> 

    <fx:Script><![CDATA[ 
    import mx.events.FlexEvent; 

    private function onButtonInitialize():void 
    { 
     trace("Button"); 
    } 


    private function initializeHandler(event:FlexEvent):void 
    { 
     trace("Application"); 
    } 
    ]]></fx:Script> 
</s:WindowedApplication> 

不幸的是這個簡單的例子說明無子組件,甚至沒有初始化處理程序被觸發。但是,只要將根標記更改爲mx:WindowedApplication,所有行爲都將按預期行事:顯示標籤和按鈕,控制檯顯示兩條跟蹤語句的輸出。

我缺少什麼?

我使用Flex 4.5.0並使用flex-mojos進行構建。

+2

您確定編譯正確嗎?你如何設置你的項目?你的app.xml如何?您選擇哪種版本的Air,是因爲對底層應用配置xml進行了一些更改。 –

+0

我的目標是AIR 2.6。它編譯和兩種情況下,我可以看到紅色的背景。到目前爲止,我的自定義app.xml沒有涉及,但是一旦我打包一個AIR應用程序,這可能是一個問題。然而目前我所做的只是讓我的IDE,IntelliJ IDEA運行WindowedApplication類。 – Yaba

+1

不熟悉Flex/AIR開發的IntelliJ IDEA(我使用FlashBuilder),但是您構建的是調試版本嗎?如果不調試,我認爲trace()不起作用。順便說一句,我在FlashBuilder中試過你的代碼,它運行良好,所以這很可能是Flex-mojos配置的一個問題。 –

回答

2

我會猜測這是你的描述符文件關閉。以下是Flash Builder爲我創建的默認設置:

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<application xmlns="http://ns.adobe.com/air/application/2.6"> 

<!-- Adobe AIR Application Descriptor File Template. 

    Specifies parameters for identifying, installing, and launching AIR applications. 

    xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/2.6 
      The last segment of the namespace specifies the version 
      of the AIR runtime required for this application to run. 

    minimumPatchLevel - The minimum patch level of the AIR runtime required to run 
      the application. Optional. 
--> 

    <!-- A universally unique application identifier. Must be unique across all AIR applications. 
    Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. --> 
    <id>Airtest</id> 

    <!-- Used as the filename for the application. Required. --> 
    <filename>Airtest</filename> 

    <!-- The name that is displayed in the AIR application installer. 
    May have multiple values for each language. See samples or xsd schema file. Optional. --> 
    <name>Airtest</name> 

    <!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade. 
    Values can also be 1-part or 2-part. It is not necessary to have a 3-part value. 
    An updated version of application must have a versionNumber value higher than the previous version. Required for namespace >= 2.5 . --> 
    <versionNumber>0.0.0</versionNumber> 

    <!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users. Optional. --> 
    <!-- <versionLabel></versionLabel> --> 

    <!-- Description, displayed in the AIR application installer. 
    May have multiple values for each language. See samples or xsd schema file. Optional. --> 
    <!-- <description></description> --> 

    <!-- Copyright information. Optional --> 
    <!-- <copyright></copyright> --> 

    <!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 --> 
    <!-- <publisherID></publisherID> --> 

    <!-- Settings for the application's initial window. Required. --> 
    <initialWindow> 
     <!-- The main SWF or HTML file of the application. Required. --> 
     <!-- Note: In Flash Builder, the SWF reference is set automatically. --> 
     <content>[This value will be overwritten by Flash Builder in the output app.xml]</content> 

     <!-- The title of the main window. Optional. --> 
     <!-- <title></title> --> 

     <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. --> 
     <!-- <systemChrome></systemChrome> --> 

     <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. --> 
     <!-- <transparent></transparent> --> 

     <!-- Whether the window is initially visible. Optional. Default false. --> 
     <!-- <visible></visible> --> 

     <!-- Whether the user can minimize the window. Optional. Default true. --> 
     <!-- <minimizable></minimizable> --> 

     <!-- Whether the user can maximize the window. Optional. Default true. --> 
     <!-- <maximizable></maximizable> --> 

     <!-- Whether the user can resize the window. Optional. Default true. --> 
     <!-- <resizable></resizable> --> 

     <!-- The window's initial width in pixels. Optional. --> 
     <!-- <width></width> --> 

     <!-- The window's initial height in pixels. Optional. --> 
     <!-- <height></height> --> 

     <!-- The window's initial x position. Optional. --> 
     <!-- <x></x> --> 

     <!-- The window's initial y position. Optional. --> 
     <!-- <y></y> --> 

     <!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. --> 
     <!-- <minSize></minSize> --> 

     <!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. --> 
     <!-- <maxSize></maxSize> --> 

     <!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default is the natural orientation of the device --> 

     <!-- <aspectRatio></aspectRatio> --> 

     <!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false --> 

     <!-- <autoOrients></autoOrients> --> 

     <!-- Whether the app launches in full screen. Optional. Mobile only. Default false --> 

     <!-- <fullScreen></fullScreen> --> 

     <!-- The render mode for the app (either auto, cpu, or gpu). Optional. Mobile only. Default auto --> 

     <!-- <renderMode></renderMode> --> 

     <!-- Whether or not to pan when a soft keyboard is raised or lowered (either "pan" or "none"). Optional. Defaults "pan." --> 
     <!-- <softKeyboardBehavior></softKeyboardBehavior> --> 
    <autoOrients>false</autoOrients> 
     <fullScreen>false</fullScreen> 
     <visible>false</visible> 
    </initialWindow> 

    <!-- We recommend omitting the supportedProfiles element, --> 
    <!-- which in turn permits your application to be deployed to all --> 
    <!-- devices supported by AIR. If you wish to restrict deployment --> 
    <!-- (i.e., to only mobile devices) then add this element and list --> 
    <!-- only the profiles which your application does support. --> 
    <!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> --> 

    <!-- The subpath of the standard default installation location to use. Optional. --> 
    <!-- <installFolder></installFolder> --> 

    <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. --> 
    <!-- <programMenuFolder></programMenuFolder> --> 

    <!-- The icon the system uses for the application. For at least one resolution, 
    specify the path to a PNG file included in the AIR package. Optional. --> 
    <!-- <icon> 
     <image16x16></image16x16> 
     <image32x32></image32x32> 
     <image36x36></image36x36> 
     <image48x48></image48x48> 
     <image72x72></image72x72> 
     <image114x114></image114x114> 
     <image128x128></image128x128> 
    </icon> --> 

    <!-- Whether the application handles the update when a user double-clicks an update version 
    of the AIR file (true), or the default AIR application installer handles the update (false). 
    Optional. Default false. --> 
    <!-- <customUpdateUI></customUpdateUI> --> 

    <!-- Whether the application can be launched when the user clicks a link in a web browser. 
    Optional. Default false. --> 
    <!-- <allowBrowserInvocation></allowBrowserInvocation> --> 

    <!-- Listing of file types for which the application can register. Optional. --> 
    <!-- <fileTypes> --> 

     <!-- Defines one file type. Optional. --> 
     <!-- <fileType> --> 

      <!-- The name that the system displays for the registered file type. Required. --> 
      <!-- <name></name> --> 

      <!-- The extension to register. Required. --> 
      <!-- <extension></extension> --> 

      <!-- The description of the file type. Optional. --> 
      <!-- <description></description> --> 

      <!-- The MIME content type. --> 
      <!-- <contentType></contentType> --> 

      <!-- The icon to display for the file type. Optional. --> 
      <!-- <icon> 
       <image16x16></image16x16> 
       <image32x32></image32x32> 
       <image48x48></image48x48> 
       <image128x128></image128x128> 
      </icon> --> 

     <!-- </fileType> --> 
    <!-- </fileTypes> --> 

    <!-- iOS specific capabilities --> 
    <!-- <iPhone> --> 
     <!-- A list of plist key/value pairs to be added to the application Info.plist --> 
     <!-- <InfoAdditions> 
      <![CDATA[ 
       <key>UIDeviceFamily</key> 
       <array> 
        <string>1</string> 
        <string>2</string> 
       </array> 
       <key>UIStatusBarStyle</key> 
       <string>UIStatusBarStyleBlackOpaque</string> 
       <key>UIRequiresPersistentWiFi</key> 
       <string>YES</string> 
      ]]> 
     </InfoAdditions> --> 
     <!-- <requestedDisplayResolution></requestedDisplayResolution> --> 
    <!-- </iPhone> --> 

    <!-- Specify Android specific tags that get passed to AndroidManifest.xml file. --> 
    <!--<android> 
     <manifestAdditions> 
     <![CDATA[ 
      <manifest android:installLocation="auto"> 
       <uses-permission android:name="android.permission.INTERNET"/> 
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
       <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
       <uses-configuration android:reqFiveWayNav="true"/> 
       <supports-screens android:normalScreens="true"/> 
       <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/> 
       <application android:enabled="true"> 
        <activity android:excludeFromRecents="false"> 
         <intent-filter> 
          <action android:name="android.intent.action.MAIN"/> 
          <category android:name="android.intent.category.LAUNCHER"/> 
         </intent-filter> 
        </activity> 
       </application> 
      </manifest> 
     ]]> 
     </manifestAdditions> 
    </android> --> 
    <!-- End of the schema for adding the android specific tags in AndroidManifest.xml file --> 

</application> 
+0

你是對的!我的運行配置錯了。當我使用mx:WindowedApplication時,IDEA顯然不需要描述符,但需要一個用於s:WindowsApplication的描述符。 所以我創建了一個自定義的AIR運行配置,並在這裏選擇了一個合適的描述符。 – Yaba

+1

@J_A_X:我有和@Yaba一樣的問題,我使用的是FB4.5,如果我使用默認的描述符文件(與發佈的文件相同),如果我更改了' true'我看到窗戶,但只看到背景。如果我使它成爲一個mx WindowedApplication,它的所有好處...... – goliatone

+0

@goliatone,我認爲你應該開始自己的問題併發布描述符文件和代碼。 –