在flex中返回原始状态时找不到属性

时间:2014-08-09 11:26:40

标签: flex flash-builder

我的应用程序使用API​​从数据库中获取电影列表,当用户选择电影时,他会获得有关此电影的详细信息。现在我添加了一个后退按钮,让用户返回原始状态。 (从state_details到state_start)。然而,当我选择一部新电影时,我得到一个错误说:

  

ReferenceError:错误#1069:找不到属性moreInfo   spark.skins.spark.ApplicationSkin并没有默认值。在   customComponents :: MovieRenderer / ___ MovieRenderer_Image1_click()[C:\用户\用户\的Adobe   Flash Builder   4.6 \ Project_RMA \ SRC \ customComponents \ MovieRenderer.mxml:51]

我尝试了不同的方法让它工作但没有任何运气。应用程序能够在应用程序初始化时找到属性moreInfo。它首先加载当前流行的电影并点击一个以获得更多信息工作正常。但是当你退出那个对象时,它会给出一个错误,它再也找不到属性了。

以下是一些代码:

moreInfo:

        public function moreInfo(movieData:Movie, fromMoreInfo:Boolean = false):void
        {       

            currentState = "state_details";
            lblTitle.text = movieData.title;
            moviePoster.source = movieData.image;

         } 

单击图像时(在项目渲染器中),它会调用moreInfo

<s:Image width="170" height="170" x="-4" y="-4" source="{movieData.image}" click="parentDocument.moreInfo(movieData, fromMoreInfo);"></s:Image>

希望这是足够的代码来解决它。

编辑:

state_detail上有一个按钮,我将状态改回到它的事件处理程序中。

protected function button1_clickHandler(event:MouseEvent):void
        {
            currentState = 'state_first';   
        }

1 个答案:

答案 0 :(得分:0)

我没有让你的itemrenderer实例直接在你的主容器上调用东西,而是重构从你的itemrenderer派遣事件并让应用程序对此进行操作:

<s:Image width="170" height="170" x="-4" y="-4" source="{movieData.image}" click="dispatchEvent(new DataEvent(MOVIE_DATA_SELECTED,false, false, movieData.id));"></s:Image>

在主应用程序文件中,将其添加到creationComplete侦听器:

movieList.addEventListener(MyItemRenderer.MOVIE_DATA_SELECTED, onSelectMovie);

同时添加此功能:

public function onSelectMovie(e:DataEvent):void {
    var movie:Movie = lookUpMovie(e.data); //e.data is the movie ID
    moreInfo(movie, true);
}