Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Feathers(基于椋鸟的Adobe AIR library)列表控件不';第二次它不工作';s实例化_Actionscript 3_Air_Adobe_Starling Framework - Fatal编程技术网

Actionscript 3 Feathers(基于椋鸟的Adobe AIR library)列表控件不';第二次它不工作';s实例化

Actionscript 3 Feathers(基于椋鸟的Adobe AIR library)列表控件不';第二次它不工作';s实例化,actionscript-3,air,adobe,starling-framework,Actionscript 3,Air,Adobe,Starling Framework,我的羽毛列表控件有问题。它在我第一次进入包含列表的屏幕时起作用,但在同一个应用程序执行中第二次进入该屏幕时,滚动列表根本不会滚动,文本也不会出现。控制台中不会出现任何错误 我已经尝试了很多东西,但我仍然有相同的问题:它只在第一次实例化时起作用。如果我退出屏幕并返回,它根本不工作 当退出屏幕时,它被释放,当返回到该屏幕时,它是列表的一个新实例。为什么它只在第一次工作 此外,我尝试根本不使用自定义ItemRenderer,因此只显示图像,不显示文本,但仍然发生相同的情况。第二次实例化时,列表不响应滚

我的羽毛列表控件有问题。它在我第一次进入包含列表的屏幕时起作用,但在同一个应用程序执行中第二次进入该屏幕时,滚动列表根本不会滚动,文本也不会出现。控制台中不会出现任何错误

我已经尝试了很多东西,但我仍然有相同的问题:它只在第一次实例化时起作用。如果我退出屏幕并返回,它根本不工作

当退出屏幕时,它被释放,当返回到该屏幕时,它是列表的一个新实例。为什么它只在第一次工作

此外,我尝试根本不使用自定义ItemRenderer,因此只显示图像,不显示文本,但仍然发生相同的情况。第二次实例化时,列表不响应滚动事件。所以ItemRenderer没有问题

好的,这里有一些代码:

        typeList = new List();
        typeList.x = Settings.appResolution[0] - Settings.menuTypeColumnWidth;
        typeList.y = Settings.topBarHeight;
        typeList.width = Settings.menuTypeColumnWidth;
        typeList.height = Settings.appResolution[1] - Settings.topBarHeight;
        typeList.dataProvider = new ListCollection(listContents);
        typeList.itemRendererProperties['labelField'] = 'text';
        typeList.itemRendererProperties['accessoryLabelField'] = 'articles';
        typeList.itemRendererProperties['iconSourceField'] = 'thumbnail';
        var listLayout:VerticalLayout = new VerticalLayout();
        listLayout.gap = Settings.menuTypeItemGap;
        typeList.layout = listLayout;
        typeList.addEventListener(Event.CHANGE, onListChange);
        typeList.itemRendererType = MenuTypeItemRenderer;
正如你所看到的,这没什么不寻常的


感谢您的帮助。

您确定在执行第二次实例化时列表使用的ListCollection仍然可用吗

_list.dataProvider = new ListCollection(items);

下面是我使用过的代码示例。看看有没有线索。在类从stage中移除之前,我调用clearList函数

private function onAddedToStage(e:starling.events.Event):void {

removeEventListener(starling.events.Event.ADDED_TO_STAGE, onAddedToStage);
addEventListener(starling.events.Event.REMOVED_FROM_STAGE, onRemovedFromStage);


//only do this if a list does not already exist.
if(!_list){

items = new <ListItem>[];
for(var i:int = 0; i < 20; i++) {
items.push(new ListItem("Item text"));
}

_list = new List();
_list.itemRendererFactory = function():IListItemRenderer {
renderer = new ListItemRenderer();  
// pass your skins in here
renderer.defaultSkin = new Image(AssetManager.getAtlas().getTexture("listItemClear_normal"));
renderer.defaultSelectedSkin = new Image(AssetManager.getAtlas().getTexture("listItemClear_selected"));
return renderer;
};

vl = new VerticalLayout();  
vl.hasVariableItemDimensions = false;
_list.layout = vl;                      
_list.scrollerProperties.snapScrollPositionsToPixels = true;
_list.scrollerProperties.verticalScrollPolicy = Scroller.SCROLL_POLICY_AUTO;
_list.scrollerProperties.horizontalScrollPolicy = Scroller.SCROLL_POLICY_OFF;
_list.scrollerProperties.scrollBarDisplayMode = Scroller.SCROLL_BAR_DISPLAY_MODE_FLOAT;

//need to use a factory as we are not using a theme
_list.scrollerProperties.verticalScrollBarFactory = myScrollBarFactoryFunction;

_list.isSelectable = false;
_list.scrollerProperties.hasElasticEdges = true;
_list.itemRendererProperties.height = 60r;

_list.addEventListener(starling.events.Event.CHANGE, list_changeHandler);
_list.width = 320;
_list.height = StartUp._stageHeight;

addChild(_list);

_list.dataProvider = new ListCollection(items);
}
}



public function myScrollBarFactoryFunction():IScrollBar {

scrollBar = new SimpleScrollBar();
scrollBar.direction = SimpleScrollBar.DIRECTION_VERTICAL;
scrollBar.thumbProperties.defaultSkin = new Scale3Image(new Scale3Textures(AssetManager.getAtlas().getTexture("vertical-scroll-bar-thumb-skin"), 5, 14, Scale3Textures.DIRECTION_VERTICAL));      
scrollBar.thumbProperties.width = 4;
scrollBar.thumbProperties.minHeight = 20;
scrollBar.width = 4;
return scrollBar;

}


public function clearList():void {

if (_list) {
scrollBar = null;           
renderer = null;
vl = null;
removeChild(_list);     
_list = null;   

items.length = 0;
items = null;
}
}
addedStatage(e:starling.events.Event)上的私有函数:void{ 移除EventListener(starling.events.Event.ADDED_至_阶段,OnAddedStatage); addEventListener(starling.events.Event.REMOVED_FROM_STAGE,onremovedfrom STAGE); //仅当列表不存在时才执行此操作。 如果(!\u列表){ 项目=新[]; 对于(变量i:int=0;i<20;i++){ 项目推送(新列表项目(“项目文本”)); } _列表=新列表(); _list.itemrrenderfactory=函数():IListItemRenderer{ renderer=新的ListItemRenderer(); //把你的皮递过来 renderer.defaultSkin=新图像(AssetManager.getAtlas().getTexture(“listItemClear_normal”); renderer.defaultSelectedSkin=新图像(AssetManager.getAtlas().getTexture(“listItemClear_selected”); 返回渲染器; }; vl=新的垂直布局(); vl.hasVariableItemDimensions=false; _list.layout=vl; _list.scrollerProperties.snapScrollPositionsToPixels=true; _list.scrollerProperties.verticalScrollPolicy=Scroller.SCROLL\u POLICY\u AUTO; _list.scrollerProperties.horizontalScrollPolicy=Scroller.SCROLL\u POLICY\u OFF; _list.scrollerProperties.scrollBarDisplayMode=Scroller.SCROLL\u BAR\u DISPLAY\u MODE\u FLOAT; //需要使用工厂,因为我们没有使用主题 _list.scrollerProperties.verticalScrollBarFactory=myScrollBarFactoryFunction; _list.isSelectable=false; _list.scrollerProperties.hasElasticEdges=true; _list.ItemRenderProperties.height=60r; _list.addEventListener(starling.events.Event.CHANGE,list\u changeHandler); _列表宽度=320; _list.height=启动阶段高度; addChild(_列表); _list.dataProvider=新列表集合(项); } } 公共函数myScrollBarFactoryFunction():IScrollBar{ scrollBar=新的SimpleScrollBar(); scrollBar.direction=SimpleScrollBar.direction\u垂直; scrollBar.thumbProperties.defaultSkin=新的Scale3Image(新的Scale3Textures(AssetManager.getAtlas().getTexture(“垂直滚动条拇指皮肤”),5,14,Scale3Textures.DIRECTION_vertical)); scrollBar.thumbProperties.width=4; scrollBar.thumbProperties.minHeight=20; scrollBar.width=4; 返回滚动条; } 公共函数clearList():void{ 如果(_列表){ 滚动条=空; 渲染器=空; vl=null; removeChild(_列表); _列表=空; 项目长度=0; items=null; } }
1。如何初始化主题。2您是否使用标准主题,如金属制品。3.你使用哪种版本的羽毛。4.你能发一些代码吗???1和2。我没有使用主题,所以我使用的是自定义ItemRenderer/3。我正在使用Feathers的最新稳定版本(1.0.1)/4。我没有发布代码,因为它是列表组件的一个非常标准的实例化。我想没有什么不寻常的。无论如何,我都会编辑我的帖子,添加一些代码。传递给“new ListCollection()”的数组实际上是在实例化前几行创建的。