我正在努力尝试在Flex中实现可重复使用的对话框。
所有对话框的大小都相同,使用艺术家绘制的图像作为背景。
标题和一些内容应该有空格。
所有对话框将使用相同的嵌入字体作为标题,并使用不同的嵌入字体作为内容。
出于某种原因,我无法理解Flex / MXML / Skins的做事方式。
这是我想要实现的一个例子: http://i.imgur.com/NaXIOlY.jpg
背景图片,特定字体和位置的标题以及内容的位置。
编辑以澄清: 对不起我的问题不是很清楚。我知道如何创建弹出窗口和自定义组件。我遇到的问题是如何创建具有不同内容的不同对话框,但是所有对话共享相同的背景,有标题的位置,按钮的区域等。我可以创建看起来像我想要的对话框,但是我必须复制每个对话框的代码,如果我想要改变一些东西,我必须每隔一个对话框复制它。
答案 0 :(得分:1)
你的问题非常通用,所以这里有一个恢复的答案,可以让你全面了解你需要做什么。 创建一个 mxml 组件,并使用Adobe Flash Builder的设计视图构建布局。 为动态值添加 [Bindable] 变量,即:
<mx:Script>
<![CDATA[
[Bindable]
public var title:String;
]]>
</mx:Script>
<mx:Label id="titleLbl" text="{title}"/>
要显示弹出窗口,请使用以下AS代码:
var popup:YourMXML = YourMXML(PopUpManager.createPopUp(this,YourMXML,true));
popup.title = "Your title";
PopUpManager.centerPopUp(popup);
答案 1 :(得分:0)
以下是创建自定义对话框的代码
我在两个标签中都text
可绑定,这样我就可以将字符串文本分配给标题和消息,而不必担心是否创建了相应的组件。
详细了解data binding和Bindable metadata tag,了解实际情况。
CustomDialog.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" backgroundImage="@Embed('y3jqqq5x.jpg')" backgroundSize="100%">
<mx:Script>
<![CDATA[
[Bindable]private var _title:String;
[Bindable]private var _message:String;
public function set title(value:String):void
{
_title = value;
}
public function set message(value:String):void
{
_message = value;
}
]]>
</mx:Script>
<mx:Label id="lblTitle" horizontalCenter="0" y="10" text="{_title}" fontSize="30"/>
<mx:Label id="lblMsg" width="250" height="160" horizontalCenter="0" y="100" text="{_message}" fontSize="14"/>
</mx:Canvas>
使用以下功能在您的AS3代码中创建自定义对话框,如
private function showAlert():void
{
var popup:CustomDialog = new CustomDialog();
popup.title = "Title Goes Here";
popup.message = "Content goes here."
PopUpManager.addPopUp(popup, Application.application as DisplayObject, true);
PopUpManager.centerPopUp(popup);
}