Flex中,由于需求需要,需要动态创建多个<s:NavigatorContent>,google了半天,没有这方面的内容,大部分的都是固定的写死了有几个tab,panel它的个数是不定的,所以就考虑重写个<mx:ViewStack> 的component用来适应这种需求。
code:
package ui.accelerators.defineLandscape
{
import com.sap.rdssbs.entity.LandScape;
import com.sap.rdssbs.entity.System;
import com.sap.rdssbs.manager.ProjectManager;
import mx.containers.ViewStack;
import spark.components.Group;
import spark.components.HGroup;
import spark.components.Label;
import spark.components.NavigatorContent;
import spark.components.Scroller;
import spark.components.VGroup;
import spark.layouts.VerticalLayout;
import ui.components.Panel;
public class CustomViewStack extends ViewStack
{
private static const WIDTH:int = Number("100%");
private static const HEIGHT:int = WIDTH;
public function CustomViewStack(){
super();
this.width = WIDTH;
this.height = HEIGHT;
this.creationPolicy = "all";
for each (var landscape:LandScape in ProjectManager.getInstance().currentProject.landscapes) {
var naviCont:NavigatorContent = new NavigatorContent();
naviCont.label = landscape.name;
naviCont.width = WIDTH;
naviCont.height = HEIGHT;
var scroll:Scroller = new Scroller();
scroll.width = WIDTH;
scroll.height = HEIGHT;
var group:Group = new Group();
group.width = WIDTH;
var verticalLayout:VerticalLayout = new VerticalLayout();
group.layout = verticalLayout;
for each (var sys:System in landscape.systems) {
var panel:Panel = new Panel();
panel.title = sys.name;
panel.layout = verticalLayout;
var hgroup:HGroup = new HGroup();
hgroup.width = WIDTH;
hgroup.paddingLeft = 20;
hgroup.paddingTop = 22;
hgroup.paddingBottom = 22;
hgroup.paddingRight = 20;
var vgroup:VGroup = new VGroup();
vgroup.width = WIDTH;
vgroup.height = HEIGHT;
var label:Label = new Label();
label.text = "System Information";
label.styleName = "headline";
vgroup.addChild(label);
var proxyForm:ProxyForm = new ProxyForm();
//proxyForm.id = "";
vgroup.addChild(proxyForm);
hgroup.addChild(vgroup);
panel.addChild(hgroup);
group.addChild(panel);
}
//scroll.addChild(group);
//scroll.addElement(group);
scroll.viewport = group;
naviCont.addChild(scroll);
this.addChild(naviCont);
}
}
}
}
在mxml中,只需要引用到该类文件即可、、、
但是,code是完了,问题也就来了、、、
最先出来的是scroll.addChild(group); 这句,报错如下:
Error: addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.
于是乎,就改成了如下一句:
scroll.addElement(group);
又报错如下:
ArgumentError: This operation is not supported.
最后定位到
scroll.addElement(group);
网上搜了一下,说是scroller里面不允许使用addElement 和addElementAt两个方法,查看源代码发现,只要一使用这两个方法,他就会抛出错误:
正确的做法如下:
应该是用viewport
所以正确的语句如下:
scroll.viewport = group;
最后,as文件中的最后几行代码正确的做法如下:
//scroll.addChild(group);
//scroll.addElement(group);
scroll.viewport = group;
naviCont.addChild(scroll);
this.addChild(naviCont);
===========================>>>>
scroll.viewport = group;
naviCont.addElement(scroll);
this.addChild(naviCont);
http://stackoverflow.com/questions/5983889/how-to-populate-a-mxviewstack-dynamically-with-a-dataprovider-for-a-tabbed-navig
- 大小: 14.4 KB
分享到:
相关推荐
《Flex4声明式编程在ActionScript中的应用探析》 Flex4是Adobe Flex框架的一个重要版本,它引入了全新的ActionScript编程模型,显著提升了开发效率和应用程序的表现力。本篇文章将深入探讨Flex4中的一项核心特性...
- 0000712: raise error if Form owner is not either TUniGUIApplication or TApplication - 0000609: TUniTimer: Attach to TUniScreenMask - 0000703: TUniDBLookUpxxx bug when datasource and datafield are ...
在Flex编程中,XML是一种常用的数据格式,用于存储和传输数据。这个小例子展示了如何在Flex应用程序中将XML内容转化为文件并保存到本地系统。Flex是Adobe开发的一种开放源码的富互联网应用(RIA)框架,它使用...
### Flex技术面试知识点详解 #### 一、冒泡排序算法 **题目描述**: 写出一个升序排序的冒泡算法,将以下数组的内容【2,4,1,5,3】由大到小排列。 **解答**: 冒泡排序是一种简单的排序算法,它重复地遍历待...
然而,Flex应用的根元素(Application类的实例)并不是完全继承自DisplayObjectContainer,而是在继承结构中的Container类重写了addChild()方法。这个重写的过程添加了一个检查,确保任何被添加的子元素实现了...
Egret 白鹭开发Chrome插件(修复版)更新:20210113更新亲测Chrome 87.0.4280.141(正式版本)有效控制台偶尔会报错 Uncaught TypeError: this.addChild is not a function 。这插件依赖页面中的 Egret 引擎,当它在...
在Flex编程中,DataGrid控件是用于展示数据集的一种常用组件,它可以显示表格形式的数据。在实际应用中,我们经常需要在DataGrid的每一行中添加复选框(checkBox),以便用户可以选择一行或多行数据进行操作。这个...
在Flex编程中,动态生成组件是一项常见的需求,特别是在创建用户界面时,可能需要根据后端数据自动生成元素,如复选框(Checkbox)组。"Flex动态生成checkbox组"这个主题,就是关于如何在Flex应用中利用代码动态创建...
在Flex开发中,动态绑定XML是一种常见的数据驱动技术,它允许开发者通过XML文件来存储和管理数据,并将这些数据实时地展示在用户界面中,如树形控件。本示例着重讲解如何利用动态绑定XML来实现Flex树控件的绑定,...
3. **创建XML结构**:通过调用`AddChild`方法创建元素,`SetText`设置元素文本,`SetAttribute`设置属性。例如,创建上面的`book`元素: ```pascal var BookElm, TitleElm, AuthorElm, YearElm: IXMLNode; begin...
Flex是一种基于ActionScript 3.0的开源框架,主要用于创建富互联网应用程序(RIA,Rich Internet Applications)。它由Adobe开发,提供了强大的图形和界面设计工具,能够构建动态、交互性强的Web应用。在本主题中,...
根据提供的文件信息,我们可以总结出Flex中的多个实用技巧与应用场景。以下是对这些知识点的详细解析: ### 1. 获取屏幕分辨率 在Flex中获取屏幕分辨率是通过`Capabilities`类完成的,具体做法如下: ```...
在Flex开发中,全屏功能通常指的是将整个应用程序或舞台扩展至显示器的全部尺寸,以提供沉浸式的用户体验。然而,有时候我们可能只需要特定的组件全屏显示,而非整个应用。这个场景下的“部分全屏”功能是将一个指定...
Flex Tree 是一种在Adobe Flex框架中用于展示层次结构数据的组件。它允许用户通过节点来探索和操作数据,而Checkbox的引入则为用户提供了一种多选功能,使得用户可以选择多个树节点。在“Flex Tree 中Checkbox”的...
在本文中,我们将深入探讨如何在Flex环境中实现鼠标拖动图片的功能,并在鼠标松开时停止拖动。Flex是一种基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序(RIAs)。它提供了丰富的用户界面组件库,...
this.addChild(sprite); this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); this.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } private function onMouseDown(event:MouseEvent):void { ...
在本文中,我们将深入探讨如何在Flex应用中加载由ActionScript 2(AS2)编写的SWF文件,以及这背后的原理和技术细节。Flex是一种基于Adobe Flash Platform的开放源码框架,主要用于构建富互联网应用程序(RIA)。而...
Flex是一种基于ActionScript和XML的开放源代码框架,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。在Flex中,我们可以创建各种用户界面组件,包括按钮。标题“Flex 作出的按钮”指的是...
在Flex编程中,选项卡(Tab)是一种常见的用户界面组件,用于组织和切换多个视图或内容区域。本文将深入探讨如何在Flex中实现选项卡功能,并通过代码示例和实际效果展示其工作原理。 首先,我们需要理解Flex的基础...
- Flex 容器中的 `addChild()` 方法会被调用来实现这一过程。 - 这个阶段还可能调用 `initialize` 方法来进行进一步的初始化操作。 5. **初始化完成 (Initialization Complete):** - 在这个阶段,所有初始化操作...