参加Flash / AS3入门课程; MVC模式的问题

时间:2012-03-07 17:19:17

标签: actionscript-3 flash model-view-controller oop

好吧,所以上周我在OOP / AS3课程的这个项目上已经破坏了我的驼峰,这个上周日我意识到我的方法不起作用所以我废弃了它的好处并重新开始。

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

我们需要在菜单中使用至少两种模式,但目前我只关注MVC,以便在最终确定UI的第二部分之前我可以使mainUI工作。它基本上是这样流动的:

  • MainUI有4个菜单可以滑出。
  • 每个滑块上都有3个缩略图。
  • 点击任何缩略图将移至UI的下一部分。此功能目前已停用。

该程序以0编译器错误运行,但图像没有正确放置在舞台上,我无法弄清楚原因。正确地从XML中提取和存储所有图像路径。主背景图像被拉一次并且应该只放置一次(如果声明使用计数来确定是否运行放置功能),但是它被放置了4次滑动菜单图像。滑块被放置在正确的位置(switch语句迭代View类中的mainUI函数,并为每个滑块创建一个单独的加载器),但缩略图并未全部显示。所以我正在寻求帮助:

  • 主面板图像只能放置一次,而不是每个滑块放置4次。
  • 滑块在正确放置时,必须通过as(使用TweenMax)以不同的方向进行补间,但每个实例都无法识别,因此现在它们都有一个调用相同补间方法的eventListener。如何以一种允许我为每个补间应用不同补间的方式来区分它们(这可能是稍后关注缩略图功能的一个问题,因为我需要根据点击的拇指加载不同的XML数据)。

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

最后一个快速注释,舞台当前设置为600x480,背景为黑色。理想情况下,为了强化OOP原则,我们的教授希望我们尽可能避免使用时间表或库。

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

2 个答案:

答案 0 :(得分:-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

这可能有点过于模糊,只要告诉我你是否需要更多细节。

希望这有帮助!

答案 1 :(得分:-1)

安装FlexPMD这是一个非常好的补充(有时难以安装)它主要用于显示您未遵循标准的代码区域。例如,你的课程缺乏使用&#34;这个&#34;。你应该避免在构造函数中传递参数。在您还是新手的时候,开发标准化的写作技巧将是一种很好的做法。

查看您的代码,我发现您正在循环中调用buildUI buildUI正在为MainView分配mainUI个对象 因此,每次进行循环迭代时,都要重新分配mainUI 最后mainUI将只是该循环的最后一次迭代 不确定这是你的问题但是问题。


[编辑]
Flex SDK的优秀Singleton指南
Part 1
Part 2

Some Good writing on pure AS3 Singletons.