Пустое приложение Flex 4

Я создаю приложение Flex 4 (используя flexmojos, а не FlexBuilder). Если я создам тестовые приложения следующим образом, используя mx: Application, то я вижу кнопку, как и ожидал:

<mx:Application
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="http://www.adobe.com/2006/mxml">

    <s:Button
        label="Button"/>

</mx:Application>

Однако, если я использую s: Application, то все, что я вижу, это пустой (белый) экран:

<s:Application
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="http://www.adobe.com/2006/mxml">

    <s:Button
        label="Button"/>

</s:Application>

Между прочим, я сейчас не использую html-обертку, я просто загружаю swf прямо в браузере.

Вот мой пом ...

<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.aaa.bbb</groupId>
    <artifactId>app</artifactId>
    <packaging>war</packaging>
    <version>2.0-SNAPSHOT-1</version>
    <name>app</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <sourceDirectory>src/main/flex</sourceDirectory>
        <testSourceDirectory>src/test/flex</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.sonatype.flexmojos</groupId>
                <artifactId>flexmojos-maven-plugin</artifactId>
                <version>3.9</version>
                <dependencies>
                    <dependency>
                        <groupId>com.adobe.flex</groupId>
                        <artifactId>compiler</artifactId>
                        <version>4.5.0.20967</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
                <extensions>true</extensions>
                <configuration>
                    <policyFileUrls>
                        <url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</url>
                    </policyFileUrls>
                    <rslUrls>
                        <url>http://fpdownload.adobe.com/pub/{extension}/flex/4.5.0.20967/{artifactId}_{version}.{extension}</url>
                    </rslUrls>
                </configuration>
                <executions>
                    <execution>
                        <id>flex-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile-swf</goal>
                        </goals>
                        <configuration>
                            <output>src/main/webapp/Main.swf</output>
                        </configuration>                        
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>textLayout</artifactId>
          <version>4.5.0.20967</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>framework</artifactId>
          <version>4.5.0.20967</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>spark</artifactId>
          <version>4.5.0.20967</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>sparkskins</artifactId>
          <version>4.5.0.20967</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>rpc</artifactId>
          <version>4.5.0.20967</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>datavisualization</artifactId>
          <version>4.5.0.17855</version>
          <type>swc</type>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>flex-framework</artifactId>
          <version>4.5.0.20967</version>
          <type>pom</type>
        </dependency>
    </dependencies>

</project>

Кто-нибудь знает, что я делаю не так? Спасибо

ОБНОВИТЬ:

Теперь у меня есть все RLS в виде файлов .swz, хранящихся в том же месте, что и файл .swf, и у меня есть URL-адреса RSL, установленные следующим образом:

                            <configuration>
                    <policyFileUrls>
                        <url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</url>
                    </policyFileUrls>
                    <rslUrls>
                        <url>{artifactId}_${flex.sdk.version}.{extension}</url>
                    <url>http://fpdownload.adobe.com/pub/{extension}/flex/${flex.sdk.version}/{artifactId}_${flex.sdk.version}.{extension}</url>
                    </rslUrls>
                </configuration>

Тем не менее, приложение просто пустое. При использовании FireBug, похоже, нет никаких запросов на какие-либо RSL, которые я вижу, и также нет никаких сообщений об ошибках, относящихся к этому. Кажется, что загрузка RSL даже не предпринимается.

Это странно!


person chris    schedule 21.06.2011    source источник
comment
Вы должны получить сообщение об ошибке. Вы вообще запускаете отладку флеш-плеера?   -  person J_A_X    schedule 22.06.2011
comment
Есть ли прогресс в этом вопросе? Я столкнулся с той же проблемой, выпуск flex 4.5.1 + flexmojos 3.8 (который мне пришлось перекомпилировать с новым артефактом flex-compiler-oem)   -  person    schedule 13.07.2011


Ответы (7)


Если вы используете mojos ‹4, добавьте это в свою конфигурацию вашего flexmojos-maven-plugin

<configuration>
    <configurationReport>true</configurationReport>
    <sourceFile>Main.mxml</sourceFile>
    <configFiles><!-- Fix for Mojos's < 4 -->
        <configFile>flex-config-swf-version-11.xml</configFile> 
    </configFiles> 
...

а затем создайте этот файл

<?xml version="1.0"?> 
<flex-config> 
        <swf-version>11</swf-version> 
</flex-config> 

из: http://groups.google.com/group/flex-mojos/browse_thread/thread/143f69219fcddc16#

если у вас 4+, вы можете добавить это в свою конфигурацию

<configuration>
    <configurationReport>true</configurationReport>
    <sourceFile>Main.mxml</sourceFile>
    <swfVersion>11</swfVersion>
...

из: http://groups.google.com/group/flex-mojos/browse_thread/thread/9ff3ea2e0e0461a4

person SuperSaiyen    schedule 18.07.2011

У меня такая же проблема случайно при сборке с IntelliJ с использованием ANT. Изменение целевой версии флэш-плеера на 10.2 вместо 10.3 устранило проблему.

person Chris Kitching    schedule 09.08.2011

Я столкнулся с той же проблемой с Flex Mojos 4.0 и Flex 4.5. Проблема была решена, когда я обновился до Flex Mojos 4.1-BETA.

person Jerry Kurian    schedule 14.12.2011

Я полагаю, что проблема в RSL, которые должны быть загружены по умолчанию, но вы не нашли их должным образом. Попытайтесь перечислить все необходимые RSL и изменить их объем на merged. Думаю, this и ссылки this будут быть полезным.

person Constantiner    schedule 21.06.2011
comment
Я думаю, что вы правы насчет RSL, однако я не могу заставить его работать. Ваша вторая ссылка предлагает использовать ‹scope› rsl ‹scope› или ‹scope› кэширование ‹scope›, но ни один из них не принимается Maven, который просто говорит: должно быть одним из [предоставлено, компиляция, время выполнения, тест, система], но является 'rsl'. То же самое и для слияния. Я делаю что-то неправильно? - person chris; 21.06.2011
comment
Будет намного лучше, если вы разместите свой POM. - person Constantiner; 21.06.2011
comment
Между прочим, я запускаю это в исполнительном блоке по определенной причине (хотя это может быть не стандартным способом) - person chris; 21.06.2011
comment
Вы знаете, каков URL-адрес RSL? Я использую прокси-сервер, поэтому, возможно, он заблокирован, но я не знаю, что это такое, поэтому я не могу это проверить. - person chris; 21.06.2011
comment
Кажется, что сообщение об ошибке осциллографа - отвлекающий маневр, просто предупреждение от Maven, и теоретически оно должно работать. Хотя нет радости - person chris; 21.06.2011

Попробуйте установить ширину 100 и высоту 25 в обоих случаях.

person Black Dynamite    schedule 21.06.2011

Это не совсем ответ, но дополнительная информация по устранению неполадок, которая может помочь найти фактический ответ. У меня такой же результат при создании swf с помощью make в IntellijIdea 10. Я использую 4.5 SDK.

Кто-то подсказал, что мне нужен flash player 11, который находится в инкубаторе с Adobe. Я получаю такие же результаты в flash player 11 (белый экран при использовании Spark, нормально при использовании mx).

Я использую FlexMojos в других проектах, но для этого я просто провожу некоторое испытание концепции с помощью Flex 4.5 и не хотел вводить другую переменную в уравнение сборки, пока все не стабилизировалось.

Надеюсь, эта дополнительная информация поможет вам разобраться в проблеме.

person TroyJ    schedule 07.07.2011

  1. Во-первых, чтобы его можно было использовать как rsl, вам нужно указать область видимости как caching <scope>caching</scope>. предупреждения, которые вы получаете, в порядке, и это проблема с flex-mojos и maven, и я помню, как видел это в сообщении в flex-mojos-group. пожалуйста, найдите себя :)

  2. проверьте версию текстового макета, потому что она всегда имеет другой номер, чем другой rsls фреймворка. то есть для макета текста вам нужно иметь отдельную запись. см. это

                <rslUrls>
                    <url>{artifactId}_${flex.sdk.version}.{extension}</url>
                   <url>{artifactId}_${flex.textlayout.version}.{extension}</url><url>http://fpdownload.adobe.com/pub/{extension}/flex/${flex.sdk.version}/{artifactId}_${flex.sdk.version}.{extension}</url>
    
  3. Количество записей в rslurls должно соответствовать количеству записей в теге policyurls. См. здесь. so policyFileUrls массив URL-адресов файлов политики. Каждая запись в массиве rslUrls должна иметь соответствующую запись в этом массиве.

  4. Используйте расширение firebug firefox и наблюдайте за сетевой консолью, чтобы узнать, загружает ли она rsls. Вы также можете использовать подключаемый модуль net-export, чтобы сохранить журналы netconsole и вставить их.

измените свой код, чтобы выполнить вышеуказанные проверки и сообщить результаты.

person JWhiz    schedule 23.08.2011