重现步骤:
Tab切换到模态弹出窗口后面的控件,并忽略模态存在的事实.选项卡循环仅包含模态后面的控件.
我已尝试过将tabChildren设置为hasFocusableChildren的所有内容.我无法实现IFocusManager,因为它的Halo和我的模态是一个Spark组,但是它会以某种身份工作吗?看起来Flex似乎忽略了其焦点管理器中的模态.
我正在使用arrayCollection字符串填充dropDownList.我希望下拉列表控件的宽度与数组集合中最长字符串的大小(以像素为单位)匹配.我面临的问题是:集合中字符串的字体宽度不同,例如'W'看起来比'l'宽.所以我估计一个字符的宽度为8像素,但这不是很整洁.如果遇到具有许多"W"和"M"的字符串,则估计是错误的.所以我想要精确的字符串像素宽度.如何获得字符串的确切长度(以像素为单位)?
我的解决方案是将所有字符估计为8像素宽,如下所示:
public function populateDropDownList():void{
var array:Array = new Array("o","two","three four five six seven eight wwww");
var sampleArrayCollection:ArrayCollection = new ArrayCollection(array);
var customDropDownList:DropDownList = new DropDownList();
customDropDownList.dataProvider=sampleArrayCollection;
customDropDownList.prompt="Select ...";
customDropDownList.labelField="Answer Options:";
//calculating the max width
var componentWidth=10; //default
for each(var answerText in array){
Alert.show("Txt size: "+ answerText.length + " pixels: " + answerText.length*9);
if(answerText.length * 8 > componentWidth){
componentWidth=answerText.length * 8;
}
}
customDropDownList.width=componentWidth;
answers.addChild(customDropDownList);
}
Run Code Online (Sandbox Code Playgroud)
任何想法或解决方案都很受重视.
谢谢
我想让我的移动spark textarea组件包装所有内容.我发现了mx_internal做这个的方法,但是我无法调用mx_internal :: getTextField().numLines方法 - 没有这样的......以前有人这样做了吗?
是否可以使用任何IPC机制从Adobe Flash actionscript调用c ++ api?有什么好例子吗?
更新:我现在主要想要它用于桌面应用程序,即Adobe的/或任何其他人的桌面运行时
在我的Flex应用程序中,我需要一个Javascript控件来调用我的一个Actionscript方法.很简单,根据Flex/Actionscript文档,我在我的Actionscript代码中写了这个:
if (ExternalInterface.available)
ExternalInterface.addCallback("setName", setNameInActiveWindow);
Run Code Online (Sandbox Code Playgroud)
在Javascript控件中我写道:
document.getElementById('FlexAppId').setName(name);
Run Code Online (Sandbox Code Playgroud)
效果很好.完全符合预期,所以我去了生产.但它在生产中不起作用:(.相同的代码......我无法弄清楚.上面的Javascript代码是运行的,但是回调没有在Actionscript代码中执行.
这与域名安全有关吗?在本地,我使用local.mydomain.com:8080,其中local.mydomain.com解析为127.0.0.1(我需要这样做,以便一些小部件正常工作).Flex应用程序来自同一个本地Web服务器.然而,在生产中,它只是www.mydomain.com(mydomain.com不是真正的域名),Flex应用程序来自flash.mydomain.com(CDN).
我在www.mydomain.com上有一个crossdomain.xml文件:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*.mydomain.com"/>
</cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)
更新:我尝试更改本地环境,以便从flash.mydomain.com引用Flex应用程序,就像在生产中一样.事实证明我在本地也遇到了同样的问题...所以看起来这是某种域安全问题,尽管我上面有crossdomain.xml文件.我是否需要在crossdomain.xml中更改某些内容?我还需要一些额外的ExternalInterface.addCallback工作吗?
更新2:得到它的工作!我不得不这样做既Security.allowDomain("*")和Security.allowInsecureDomain("*").将其设置为flash.mydomain.com没有解决问题,我不得不放一个通配符.allowNetworking没有效果.我需要allowScriptAccess="always",但我从那以后就有这个.ExternalInterface.call只需使用该参数即可轻松调用Javascript.但是添加回调ExternalInterface.addCallback需要使用带有通配符的上述安全方法.
我已经对这个主题进行了大量的搜索,但似乎我发现它要么已经过时,要么似乎无法正常工作.
使用TextFields,您可以将TextField设置为特定宽度,将wordWrap设置为true,最终会得到一个根据您添加的文本更改高度的文本字段.
现在我试图用Spark TextArea或RichText来做这件事.
我试过这个HeightInLines = NAN,但这似乎已经过时了.
我也试过这个例程:
var totalHeight:uint = 10;
this.validateNow();
var noOfLines:int = this.mx_internal::getTextField().numLines;
for (var i:int = 0; i < noOfLines; i++)
{
var textLineHeight:int =
this.mx_internal::getTextField().getLineMetrics(i).height;
totalHeight += textLineHeight;
}
this.height = totalHeight;
Run Code Online (Sandbox Code Playgroud)
但是mx_internal不在Spark组件中.
我试图用AS3,而不是MXML.如果有人有任何建议或链接可以帮助我使用AS3解决这个问题,我真的很感激.
使用flexmojos进行编译时,我收到警告:
[警告]该部分或任何scope ="theme"依赖项中未明确定义任何主题.Flexmojos现在正试图找出要包含的主题.(为了避免此警告,您应该明确说明您的主题依赖项)
[警告]添加spark.css主题是因为spark.swc作为依赖项包含在内
我试过添加:
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>spark</artifactId>
<type>swc</type>
<scope>theme</scope>
<version>${flex.sdk.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但我只是得到一个错误:
com.adobe.flex.framework:spark:swc必须是[compile,runtime,system]之一,但是'theme'
我只想使用标准的Spark主题.
谢谢
我已经使用新的Apache Flex SDK安装程序为Flash Builder 4.7安装了Flex 4.10.0 SDK(同时尝试了MacOS和Windows),并且非常喜欢它的工作流程:

另外,我很兴奋有人还在使用Flex SDK(谢谢!) - 因为很长一段时间它看起来都被抛弃了.
我的3个问题:
有没有人有一个(据说超过十五?)新Spark组件的列表?我只注意到一个沙发:mx.controls.Alert- > spark.components.Alert.(而且我注意到spark.utils.MultiDPIBitmapSource支持source480dpi很棒).
有没有人知道,如果有一个修复spark.components.List不记得它的滚动位置?因为目前在我的Flex游戏中,服务器更新了2个列表,我必须使用自定义皮肤和数据组,如此好博客中所述.
目前要滚动spark.components.List到底部我必须使用以下hack并想知道是否已经接近该问题?
public static function scrollToBottom(list:List):void {
// update the verticalScrollPosition to the end of the List
// virtual layout may require us to validate a few times
var delta:Number = 0;
var count:int = 0;
while (count++ < 10) {
list.validateNow();
delta = list.layout.getVerticalScrollPositionDelta(NavigationUnit.END);
list.layout.verticalScrollPosition …Run Code Online (Sandbox Code Playgroud)flex4 ×10
apache-flex ×8
c++ ×1
flash ×1
flex-mobile ×1
flex-mojos ×1
flex4.5 ×1
flexmojos ×1
fonts ×1
list ×1
modal-dialog ×1
popup ×1
richtext ×1
string ×1
textarea ×1