浅谈flex 自定义组件

flex组件编写起来很简单,而编写的形式又分为两种 ,分别一mxml形式或者as class编写,两者都可以,置换直观的朋友都可以采用 mxml形式辨析,但如果你的组件需要分开多个类来写,又或者是想效率高点的话,你可以采用as写
但最终我们都需要一个mxml的组件界面来装载我们的组件。

好,先开始说说 便签。恩,标签,可能很多出学的开发者不大清楚是什么,又或者你经常会在一些第三方或者官方组件文件里看到

[Bindable("dataChange")]

[Event(name="UnloadModule")]

[Inspectable(category="General")]

[ArrayElementType("mx.containers.utilityClasses.ConstraintColumn")]

这些语法。可能你会百思不得其解它有什么用,其实这些就是标签(Metadata )语法

Metadata 语法主要用于组件属性的一些信息捆绑,使得你可以在mxml或者组件面板里能使用一些简单的便签,如mxml语法里我们经常都会看到的 当在mxml里 输入空格符后就会提示该组件的一些属性跟方法或者事件(其实这些就是标签绑定的显示为文本),但你又会发现往往这些属性,方法或者事件有跟帮助里的名称不 一样,这个就是标签绑定的一个特点,其实就是提供了一个别名来捆绑某个方法或者事件,或者属性而已。

现在大家都应该基础了解到标签的用途了,下边咱们来说说怎么编写一个组件,就吸纳各刚才说的,我们有两种形式都可以编写flex的组件,

下边我以简单的 mxml文件为例子说说怎么写,

我们先新建一个项目MyComponent 然后再src文件夹里我们再建立一个名叫 components的文件夹

然后新建一个 MXML Component 文件 并保存到 src目录下的一个名叫 components的文件夹里

默认的我们会看到下边的代码



<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">

</mx:Canvas>


Canvas ---就是默认的集成组件,当然那哦我们你可以将它改成其他任意的组件,只要下边的命名空间指定好路径就好了

xmlns:mx------这句就是我们的命名空间,我们可以自定义任意一个自己的命名空间,命名空间主要用于区别开

类名的重复等问题,形象的说命名空间就像我们给一个类指定一个文件夹,指定一个路径。

如xmlns:wxsr='com.components.*'

这主要用于指定我们组件的类的位置。也就是包路径



下边我们来修改下这个新建的组件

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" width="292" height="226">
<mx:Metadata>
[Event(name="myComponentTextChange", type="flash.events.Event" )]
</mx:Metadata>

<mx:Script>
<![CDATA[
[Bindable("text")]
[Inspectable(defaultValue="hello word")]
public function set myComponentText(value:String):void
{
inputText.text=value
}
public function get myComponentText():String{
return inputText.text
}

]]>
</mx:Script>
<mx:TextArea id="inputText" change="this.myComponentText=inputText.text; this.dispatchEvent(new Event('myComponentTextChange'))" width="264" height="183" />
</mx:TitleWindow>

好了这样我们就创建好一个我们自定义事件的一个组件了

在这个组件里我们绑定了一个事件

<mx:Metadata>
[Event(name="myComponentTextChange", type="flash.events.Event" )]
</mx:Metadata>

这个事件的名称是(myComponentTextChange)如果你用as写可以这样调用 addEventListener('myComponentTextChange',yourFunc). 它用于在你调用这个组件时在提示里可以看到外也用于显示于flex的组件信息设置面板上显示出来

下边我们还看到这段代码

<![CDATA[
[Inspectable(defaultValue="hello word")]
public function set myComponentText(value:String):void
{
inputText.text=value
}
public function get myComponentText():String{
return inputText.text
}

这段代码主要是绑定了一个set ,get 的方法(myComponentText)并给他设定了一个默认值'hello'



好了下边我们看看我们怎么调用这个我们自定义的组件 回到项目的猪文件吧下边的代码覆盖进去

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:wxsr="components.*" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<wxsr:TestComponent id="testComponent" enterFrame="trace(testComponent.myComponentText)" myComponentTextChange="trace('------')">

</wxsr:TestComponent>
</mx:Application>
Unet是一种深度学习模型,最初由Ronneberger等人在2015年提出,主要用于生物医学图像分割。在Matlab中实现Unet网络可以利用其强大的数学计算能力和友好的可视化界面,非常适合科研和教育用途。这个"Unet分割(Matlab)Demo"提供了在Matlab环境中构建、训练和应用Unet模型的示例。 Unet网络的特点在于其对称的架构,由下采样(编码器)和上采样(解码器)两部分组成。编码器部分用于捕捉图像的上下文信息,通过多个卷积层和池化层逐级降低特征图的分辨率,增加表示能力。解码器部分则负责恢复图像的原始空间分辨率,通过上采样和与编码器的跳连接来恢复细节信息。 在`segunet.mlx`文件中,我们可能会看到以下关键步骤的实现: 1. **网络结构定义**:定义Unet的卷积层、池化层、上采样层等。Matlab的Deep Learning Toolbox提供了构建自定义网络的函数,如`conv2d`、`maxpool2d`和`upsample2d`。 2. **损失函数选择**:图像分割通常使用交叉熵损失(cross-entropy loss),有时也会结合Dice系数或Jaccard相似度来评估模型性能。 3. **数据预处理**:`data`文件可能包含训练和验证数据,需要进行归一化、分批次等预处理操作。 4. **模型训练**:设置优化器(如Adam)、学习率策略,并执行训练循环。 5. **模型评估**:在验证集上评估模型的性能,例如计算 Dice 指数或IoU(Intersection over Union)。 6. **可视化结果**:展示模型预测的分割结果,与实际标签对比,帮助理解模型性能。 为了运行这个Demo,你需要确保安装了Matlab的Deep Learning Toolbox以及相关的数据集。`segunet.mlx`是Matlab Live Script,它将代码、注释和输出结合在一起,便于理解和执行。在Matlab环境中打开此脚本,按照指示操作即可。 此外,了解Unet在网络架构设计上的创新,比如跳跃连接(skip connections),有助于理解模型为何能有效地处理图像分割任务。Unet的成功在于它既能捕捉全局信息又能保留局部细节,因此在生物医学图像分析、遥感图像分割、语义分割等领域有广泛应用。 这个"Unet分割(Matlab)Demo"提供了一个直观的起点,帮助初学者和研究人员快速上手Unet网络的实现和训练,为后续的图像分割项目打下基础。通过学习和实践,你可以掌握深度学习在Matlab中的应用,进一步提升在图像处理领域的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值