如何解决Adobe Flex错误:"错误#2036:加载从未完成"?
我正在尝试构建一个简单的组件,将spark.components.Group扩展为具有背景颜色,更具体地说是一个spark.primitives.Rect组件,它被拉伸以填充背景.
这就是我到目前为止所提出的:
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo"
<fx:Metadata>
[DefaultProperty(name="content")]
</fx:Metadata>
<s:Rect id="background" width="100%" height="100%">
<s:fill>
<s:SolidColor color="#990000"/>
</s:fill>
</s:Rect>
<s:Group id="container"/>
<s:filters>
<!-- For good measure ;) -->
<s:DropShadowFilter color="#000000" strength="0.4" blurX="5" blurY="5" distance="2" angle="90"/>
</s:filters>
<fx:Script>
<![CDATA[
public function set content(value:Array):void {
this.container.mxmlContent = value;
}
]]>
</fx:Script>
</s:Group>
Run Code Online (Sandbox Code Playgroud)
好的,所以这里的逻辑基本上是有道理的,对吧?在MXML中声明的所有子项都转到名为"container"的组中.这工作得很好.但是,当我运行下面的示例时,布局完全是fubar.
<s:VGroup>
<!-- This is the component described above -->
<components:MessageContainer id="component" width="100" height="100"/>
<mx:Slider/>
<mx:Slider/>
<mx:ColorPicker/>
</s:VGroup>
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:
flex fubar http://i34.tinypic.com/s4p0tz.jpg
这里有什么我想念的吗?也许我需要覆盖一种方法?
我有:列表组件.我想处理一个click事件以了解选择了哪个列表项.我在s:List中没有看到Click事件.任何解决方法?
谢谢.
例如,火花面板部件可以这样写
<Panel title="Skinny">
<child components ... />
<controlBarGroup>
<child control bar components ... />
</controlBarGroup>
</Panel>
Run Code Online (Sandbox Code Playgroud)
它的外观文件将处理contentGroup,controlBarGroup和titleDisplay的布局.请注意,但是contentGroup没有出现在上面的代码中,并且controlBarGroup接受子mxml组件.
现在说我想创建一个定义各种必需和非必需skinpart的自定义组件,例如'headerGroup','navigationGroup'和'accountPreferencesGroup'.我想像这样编写这个自定义组件
<MyComp>
<headerGroup>
<child components .../>
</headerGroup>
<navigationGroup>
<child components .../>
</navigationGroup>
<accountPreferencesGroup>
<child components .../>
</accountPreferencesGroup>
</MyComp>
Run Code Online (Sandbox Code Playgroud)
这里的动机是我现在可以创建几个不同的皮肤文件来改变这些子组的外观和布局.读取spark面板的源代码,mx_internal命名空间中有一些调用,例如getMXMLContent(),它是spark组件的一个方法,但是我无法访问它.
上面的描述是否有意义?如何在我的自定义Flex4组件中创建可以使用嵌套的mxml子组件的自定义"contentGroups"?我应该采用不同的方式吗?
我目前正在将应用程序从Flex 4.1升级到4.5
我们注意到,当在小尺寸下使用时,Arial字体在两个版本之间的呈现方式不同.
这是一个简单的应用示例:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@font-face {
src: url("/assets/fonts/ARIAL.ttf");
fontFamily: arial;
embedAsCFF: true;
}
@font-face {
src: url("/assets/fonts/ARIALBD.ttf");
fontFamily: arial;
embedAsCFF: true;
font-weight: bold;
}
global
{
font-family: arial;
}
</fx:Style>
<s:Label text="Hello world" fontWeight="bold" x="20" y="20" />
</s:Application>
Run Code Online (Sandbox Code Playgroud)
当针对2个不同的sdks运行时,这是我们得到的字体渲染的图像:

请注意,在4.5中,字体看起来略微压扁.
造成这种情况的原因是什么,我们如何解决?
我正在尝试通过mxmlc以这种方式编译我的项目:
[prj_folder]\src>mxmlc mymxml.mxml -library-path+=../libs -sp+=..\assets
Run Code Online (Sandbox Code Playgroud)
我得到这样的错误:
[prj_folder]\src\view\controls\controlname.mxml(7): Error: Problem finding external st
ylesheet: assets/cssname.css
<fx:Style source="assets/cssname.css"/>
Run Code Online (Sandbox Code Playgroud)
[prj_folder]\src\view\constants\Images.as(24):col:3:错误:无法转码assets/icons/icon1.png.
如何为编译器包含资产?
Adobe 的振动功能在iOS和Android上的Flex移动应用程序中运行良好,但是当我尝试在Windows 7上从Flash Builder 4.7启动AIR模拟器时,我收到错误:


这里是后一个截图的错误消息的副本:
Process terminated without establishing connection to debugger.
The content cannot be loaded because there was a problem loading an extension: Error: Requested extension com.adobe.Vibration is not supported for Windows-x86.
Launch command details: "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\bin\adl.exe" -runtime "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\runtimes\air\win" -profile extendedMobileDevice -screensize 640x920:640x960 -XscreenDPI 326 -XversionPlatform IOS -extdir "C:\Users\xxx\Adobe Flash Builder 4.7\.metadata\.plugins\com.adobe.flexbuilder.project.ui\ANEFiles\MyApp-Mobile\win32\" C:\Users\xxx\Documents\MyApp\mobile\bin-debug\MyApp-app.xml C:\Users\xxx\Documents\MyApp\mobile\bin-debug
Run Code Online (Sandbox Code Playgroud)
同时:
Adobe的另一个ANE - Adobe Gaming SDK …
有什么办法如何编译行家/ Flex项目不包含任何*的.mxml?Flex项目包含ActionScript类只(即"SRC /柔性"目录包含*.作为唯一的文件).我的pom.xml在这里:
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>test</name>
<packaging>swf</packaging>
<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.8</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>4.5.0.18623</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>flex-framework</artifactId>
<version>4.5.0.18623</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.adobe.flexunit</groupId>
<artifactId>flexunit</artifactId>
<version>0.85</version>
<type>swc</type>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
"mvn package -e"抛出此错误:
[ERROR] Failed to execute goal org.sonatype.flexmojos:flexmojos-maven-plugin:3.8:compile-swf (default-compile-swf) on project test: Source file not expecified and no default found! -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonatype.flexmojos:flexmojos-maven-plugin:3.8:compile-swf (default-compile-swf) on project q-integra-scorecard-ldservice: Source file not …Run Code Online (Sandbox Code Playgroud) 如何打开隐藏的新窗口?(注意visible="false")
<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
showStatusBar="false"
resizable="false"
visible="false">
Run Code Online (Sandbox Code Playgroud)
如果我以这种方式声明一个窗口,然后调用this.open(false);,窗口将快速打开然后隐藏,然后在我实际显示它时重新显示,这非常难看.
我想这样做是为了能够在显示之前加载内容并使窗口适合该大小.
我想在MXML文件中包含一个MXML文件,就像使用include指令在AS3中包含外部文件一样.使用include伪指令在编译时将外部文件中的代码放入原始文件中,并将其置于同一范围内.
例如,
Application.mxml:
<Application>
<source="external.mxml"/>
</Application>
Run Code Online (Sandbox Code Playgroud)
External.mxml:
<Styles/>
<Declarations>
<Object id="test"/>
</Declarations>
Run Code Online (Sandbox Code Playgroud)
我需要将此代码/ mxml/xml保留在原始范围内的外部文件中.不要问我为什么要这样做.
另一个例子.这是我当前的代码(简化)全部在1 mxml文件中:
...
File1.mxml
<Button click="clickHandler()"/>
<Script>
public function clickHandler():void {
}
</Script>
Run Code Online (Sandbox Code Playgroud)
...
这就是我想要的:
...
File1.mxml
<Group>
<source="File2.mxml"/>
<Button click="clickHandler()"/>
<Group>
File2.mxml
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
Run Code Online (Sandbox Code Playgroud)
...
我想将我的代码拆分成一个单独的文件......
~~ 更新 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
虽然不是我要求使用"代码隐藏"方案,但实现了将代码从视图中分离出来的部分功劳.因此,我创建了一个MXML文件,MyGroup.mxml或MyGroup.as,并扩展了包含clickHandler代码的Group.
这个方法的问题是我被锁定到我正在扩展的类类型,硬编码视图.因此,例如,如果我要拆分为单独文件的MXML类是Group,则必须扩展Group.
我已经完成了这项工作的项目,但并不好.人们开始在类后面的代码中设置样式和可视方面或组/查看特定属性,如果我们需要更改它或布局,我们最终将所有这些依赖项放到容器中.它变得一团糟.另外,使用Code Behind,您无法重用它(重用方式包括styles.as被重用).所以这不是一个解决方案,但我想我会提到它.
这是一个示例背后的代码,
MyGroupBehind.mxml:
<Group>
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
</Group>
Run Code Online (Sandbox Code Playgroud)
MyGroupAhead.mxml:
<MyGroupBehind>
<Button click="clickHandler()"/>
</MyGroupBehind>
Run Code Online (Sandbox Code Playgroud) flex4 ×10
apache-flex ×7
air ×2
mxml ×2
actionscript ×1
click ×1
events ×1
flex-mobile ×1
flex-skins ×1
flex3 ×1
gumbo ×1
list ×1
maven-2 ×1
mxmlc ×1
windows ×1