小编Dan*_*sky的帖子

TabNavigator无法处理Flex 4.5中的已禁用子项

我将TabNavigator从Flex 3迁移到Flex 4.5时遇到了问题.剥离到最低限度,以下代码将产生错误,即TabNavigator的第二个子项无法正确创建:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    >
    <fx:Script>
        <![CDATA[
            protected function over():void
            {
                trace('over');
            }

            protected function content_one_init():void
            {
                content_one.enabled = true;
                navigator.selectedIndex = 1;
            }

        ]]>
    </fx:Script>
    <mx:TabNavigator
        id="navigator"
        creationPolicy="auto"
        width="100%" height="100%"
        >
        <mx:VBox
            id="content_one"
            enabled="false"
            creationComplete="content_one_init()"
            label="One"
            mouseOver="over()"
            />
        <mx:VBox label="Two">
            <mx:Label text="Content Two" />
        </mx:VBox>
    </mx:TabNavigator>
</s:Application>
Run Code Online (Sandbox Code Playgroud)

我在启动时看到的是一个TabNavigator,它选择了第二个标签但没有内容而不是预期的"内容二"标签.该navigator.selectedIndex = 1;指令只是为了舒适,如果您在启动后用鼠标选择第二个选项卡,则也会出现错误.

现在来了有趣的部分:如果我执行以下任何操作,则会创建第二个子项:

  • creationPolicy="all"在content_one上设置(这是预期的),
  • 评论content_one.enabled = true,
  • 删除enabled="false"content_one,
  • mouseOver="over()"从content_one中删除(这个真的很奇怪,因为从不调用处理程序)

这真的是一个Flex bug,还是有什么我想念的?我使用的是Flex 4.5.0.20967,所有这些都在Flex 3.5中运行良好.

谢谢.

apache-flex flex4 tabnavigator

10
推荐指数
1
解决办法
937
查看次数

功能结果不能作为参考传递

经过多年的AS3,我正在尝试重新学习C++.参考资料仍然适合我.

考虑以下功能:

#include <cstdio>
#include <list>

void f(std::list<int>& v) {
  for (std::list<int>::iterator i = v.begin(); i != v.end(); ++i)
    printf("Hello %d\n", *i);
}

std::list<int> get(void) {
  std::list<int> list;
  list.push_back(0);
  return list;
}
Run Code Online (Sandbox Code Playgroud)

现在,执行以下操作:

std::list<int> l = get();
f(l);
Run Code Online (Sandbox Code Playgroud)

很好,但f(get())会产生以下错误:

"没有用于调用'f'的匹配函数","候选函数不可行:没有已知的从''std :: list <int>'转换为'std :: list <int>&'作为第一个参数"

这是为什么?是因为函数的结果是不可见的const吗?

c++ reference

5
推荐指数
1
解决办法
211
查看次数

标签 统计

apache-flex ×1

c++ ×1

flex4 ×1

reference ×1

tabnavigator ×1