gpt4 book ai didi

apache-flex - 如何在Flash CS4中管理带有链接类的库符号以在Flash Builder 4中进行编译/调试?

转载 作者:行者123 更新时间:2023-12-02 08:59:18 24 4
gpt4 key购买 nike

我正在使用Flash CS4(以下称为“Flash”)构建视频播放器,以创建图形符号并使用Flash Builder 4(“FB4”)进行编译和调试。这是我当前工作流程中采取的步骤:

-在Flash中创建图形符号。我为播放器创建了一些不同的符号,但这里我仅关注播放/暂停按钮(“ppbutton”)。

-在“库”面板中,转到ppbutton符号的“链接”属性,然后链接到扩展了MovieClip的名为asset.PlayPauseButtonAsset的类。我实际上没有资产包,也没有PlayPauseButtonAsset的类文件,因为Flash在发布时会为我创建它们。

-在Flash的“发布”设置中,我将项目设置为导出将在FB4中使用的SWC,称为VideoPlayerAssets.swc。

-创建SWC之后,我创建了一个名为“VideoPlayer”的FB4项目,并将SWC添加到了我的路径中。 FB4在默认程序包中自动创建VideoPlayer类。

-在VideoPlayer.as中,我导入资产。*,它导入我在Flash中创建的所有符号类,并可以通过VideoPlayerAssets.swc使用。我现在可以实例化ppbutton并将其添加到舞台,如下所示:

var ppbutton:PlayPauseButtonAsset = new PlayPauseButtonAsset();
addChild(ppbutton);

此时ppbutton没有任何功能,因为我没有为其创建任何代码。因此,我创建了一个名为video.controls.PlayPauseButtonLogic的新类,该类扩展了asset.PlayPauseButtonAsset。我添加了一些逻辑,现在我可以使用该新类在舞台上放置一个有效的ppbutton:
var ppbutton:PlayPauseButtonLogic = new PlayPauseButtonLogic();
addChild(ppbutton);

这可以正常工作,但是您可能会问为什么我不首先将Flash中的ppbutton符号链接(symbolic link)到video.controls.PlayPauseButtonLogic类。原因是我有一个设计师在Flash中创建UI,并且我不想每次更改逻辑时都必须从Flash重新发布SWC。基本上,我希望设计人员能够在Flash中制作一个符号,将该符号链接(symbolic link)到“链接”属性中的逻辑命名类,并导出SWC。除非设计人员对符号或布局进行更改,否则我不必再次触摸该.fla文件。我也为该项目使用了版本控制系统,这样可以确保只有设计人员才能接触.fla文件,这样比较干净。

所以,最后,这是我遇到的问题:

-随着设计变得越来越复杂,设计人员正在嵌套符号以将视频控件放置在控件栏上。他创建了一个控制栏符号,并将其链接到asset.ControlBarAsset。控件栏符号包含ppbutton符号。

-设计人员发布了SWC,并且ControlBarAsset现在在FB4中可用。我创建了一个名为video.controls.ControlBarLogic的新类,该类扩展了asset.ControlBarAsset,以便可以向控制栏添加一些逻辑,并将控制栏添加至舞台:
var controlbar:ControlBarLogic = new ControlBarLogic();
addChild(controlbar);

-可以,但是ppbutton没做任何事情。这是因为ppbutton虽然位于控制栏中,但仍仅链接到PlayPauseButtonAsset,而后者没有任何逻辑。我不再实例化ppbutton对象,因为它是控件栏的一部分。

那就是我今天被困的地方。当出现类型错误时,我似乎无法简单地将Controlbar的ppbutton重铸为PlayPauseButtonLogic。而且我不需要创建必须实例化每个视频播放器控件的类,而是根据设计者的放置方式将它们放置在舞台上的x和y值上,因为这需要我打开.fla并检查符号的各种属性,然后将这些值添加到代码中。如果设计人员进行了更改,则每次都必须进入代码,以便每次都更新这些属性。不好。

如何重新铸造嵌套符号以使用我创建的扩展资产类的逻辑类?请记住,解决方案不是将Flash符号链接(symbolic link)到实际类,因此我不必一直重新编译SWC,除非有一种方法可以不必重新编译SWC。我希望设计师完成他的工作,发布SWC并完成它。然后,我可以使用他的SWC,将我的逻辑应用于他的资产,并且能够调试和编译最终的SWF。

最佳答案

这是我有时使用的解决方案:

不要将PlayPauseButtonLogic扩展为PlayPauseButtonAsset,而是使用此类作为PalyPauseButtonAsset的扭曲器,使用组合而不是继承! ; )。

您将在ControlBarLogic类中获得以下内容:

//constructor exemple
public function ControlBarLogic(){
//all logic of PPButton is inside PlayPauseButtonLogic
//you just pass a reference to the PlayPauseButtonAsset button contained inside ControlBarAsset
var ppButtonLogic: PlayPauseButtonLogic=new PlayPauseButtonLogic(refToButtonAsset)
//the warper class can extends EventDispatcher so you will be able to listen to custom or redisatched events
ppButtonLogic.addEventListener("ppPause",onPause)
}

希望对你有帮助

关于apache-flex - 如何在Flash CS4中管理带有链接类的库符号以在Flash Builder 4中进行编译/调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com