2012-03-07 38 views
0

好了,所以我一直在过去一周左右的破坏在这个项目上我的OOP/AS3当然,我的驼峰和过去的这个星期天我意识到,我的做法是行不通的,所以我报废了更好它的一部分,并开始了。介绍Flash/AS3课程;问题MVC模式

我们的任务是创建一个展示我们刚刚学到的OOP模式的理解基于XML的Flash菜单。这是一个'测试水域'项目,他给了我们大量的教程和信息,并告诉我们尽最大努力去理解它,所以我确信有更有效的方法来做我的东西这样做,但这是一个有争议的问题。

我们需要使用我们的菜单至少两种模式,虽然此刻我只是专注于MVC,这样我可以得到mainUI工作之前,我完成了UI的第二部分。它基本上像这样流动:

  • MainUI有4个滑出的菜单。
  • 每个滑块上都有3个缩略图。
  • 点击任何缩略图将移动到用户界面的下一部分。该功能目前被禁用。

该程序运行0编译器错误,但图像没有正确放置在舞台上,我不明白为什么。所有图像路径都正在从XML中拉出并存储。主背景图像被拖动一次,应该只放置一次(如果语句使用计数来确定是否运行布局功能),但是它将与滑动菜单图像放置4次。滑块被放置在正确的位置(switch语句遍历View类中的mainUI函数,并为每个函数创建一个单独的加载器),但缩略图不会全部显示出来。所以这里是我正在寻求帮助:

  • mainPanel图像应该只放置一次,而不是每个滑块4次。
  • 滑块,当被正确地放置,必须在不同的方向通过如(使用TweenMax)补间,但每个实例是不可识别从其他所以现在它们都有调用相同的方法吐温一个事件监听。我怎样才能区分它们,让我为每个应用不同的补间(稍后,这可能是缩略图功能的问题,因为我需要根据点击哪个拇指来加载不同的XML数据)。

我已经添加了我希望对每个脚本非常翔实的评论,所以希望人们可以提供帮助。还包括了我想让mainUI最终看起来像以及它目前如何出现的图像。

最后一个快速提示,舞台当前设置为黑色背景的600x480。理想情况下,为了加强面向对象的原则,我们的教授希望我们尽可能避免使用时间表或图书馆。

任何建议都将不胜感激!谢谢!

回答

-1

安装FlexPMD这是一个很好的补充(有时很难安装)它基本上用来显示你的代码的领域,你不符合标准。例如,你的课程缺乏“this”的使用。你应该避免在构造函数中传递参数。在你还是新手的时候,开发标准化的写作技巧是一种很好的做法。在你的代码

的样子,我看你是从一个循环中调用buildUI
buildUI正在为mainUI分配MainView对象。
所以每次你经历一个循环迭代时,你都要重新分配mainUI。
最后mainUI将只是该循环的最后一次迭代。
不确定这是你的问题,但是一个问题。


[编辑]
优秀辛格尔顿指南的Flex SDK
Part 1
Part 2

Some Good writing on pure AS3 Singletons.

+0

嗯,我想我明白了,请纠正我,如果我有这个错误,但由于循环最终调用buildUI(和随后,menuView类)不会通过menuView函数运行之前,完成循环的下一个迭代?像这样也许: Loop> if>调用到buildUI> buildUI证实mainUI作为menuView类的一个实例,传递从上述函数拉取的参数> menuView class'构造函数使用来自循环的XML数据运行> switchUI()基于循环迭代的舞台上的加载元素>循环再次运行 – ecarv141 2012-03-07 21:57:20

+0

请告诉我,如果这不是正确的事件顺序。我还会看看你推荐的插件。 – ecarv141 2012-03-07 22:02:22

+0

使用“新建”的循环内部将创建一个对象的新实例,并将对象的引用加密,以使它具有2个对象,但是,在函数中,我不确定它将如何处理,可能一样的方法。无论哪种方式,您仍然只保留对最后一次迭代的引用。就我个人而言,我会创建一个Menu类,它将是一个Singleton(用于您的一种模式)。让Menu类加载将处理图像的自定义类加载器的实例。与此关键字将封装。 – 2012-03-07 22:37:43

-1

由于您的XML数据未格式化,我将无限期地从头开始。

你的XML应该类似于这样的东西。

<MainProject> 
<MainUI> 
    <Thumbnail Name="Spring"> 
     <Destination Name="Spring" Price="99" ratingPath="images/SP1/SP1rating.png" /> 
    </Thumbnail> 

    <Thumbnail Name="Winter"> 
     <Destination Name="Winter" Price="152" ratingPath="images/SP1/SP2rating.png" /> 
    </Thumbnail> 
</MainUI> 
</MainProject> 

然后,你应该在舞台上有如下结构。这些影片剪辑应该是空的,并且已经放置在实例名称的舞台上。

Stage 
    MenuUI MovieClip 
     ThumbNail1 MovieClip <- feed it thumbnail from the XML 
     ThumbNail2 MovieClip <- feed it thumbnail from the XML 
     ThumbNail3 MovieClip <- feed it thumbnail from the XML 
     ThumbNail4 MovieClip <- feed it thumbnail from the XML 

这可能是有点太模糊,只是告诉我,如果你需要更多的细节。

希望这会有所帮助!

+0

对不起投票下来我看到的没有错,他的XML – 2012-03-07 20:48:42

+0

当然,他们没有错与你的XML不同的是,它的映射属性作为对象,反之亦然。投下你的唯一帮助。 – 2012-03-07 21:14:56

+0

我没有投下任何东西......即使我想,我也不能,我太新了。 我试图做到这一点,而不使用时间轴,库,或直接在舞台上放置任何movieclip。这一切都应该通过AS完成。我对AS和OOP也很陌生,所以我很抱歉,如果我不明白你的建议的额外效用,但我很感谢任何帮助! – ecarv141 2012-03-07 21:46:33