【问题标题】:Flash authoring environment strange Test Movie behavior (AS3)Flash 创作环境奇怪的测试电影行为 (AS3)
【发布时间】:2011-05-11 00:33:25
【问题描述】:

我一生都无法弄清楚为什么会发生这种情况。让我描述一下我的经历。

我通过 actionscript 动态添加所有内容。

在 Flash 创作环境中,当我测试影片时,有时舞台上的所有影片剪辑都消失了,我看到的只是舞台的颜色。

奇怪的是我仍然可以翻转/转出(我在我的翻转/转出处理程序中添加了跟踪语句)。 我也在追踪 'visible' 和 'alpha' 属性以及 visible=true 和 alpha=1.0 !!! 我am 看到的事情是,有时会快速连续多次调用翻转/推出方法。 IE。方法调用顺序为rollover、rollout、rollover或rollout、rollover、rollout。

我在翻转和转出方法中的操作真的很简单。他们所做的只是打开/关闭其他电影剪辑...想象一下地图...当您滚动图标时,地图上会显示一条路径,当您滚动时,路径会消失。

但是,如果我调整测试电影窗口的窗口,一切都会再次出现!

疯狂的是,当我发布它时,这种行为不会发生在浏览器或应用程序中!

发生了什么事?这可能是创作环境的记忆吗?

在这里发布一些代码:

    private function rollOverUserListener ( e:MouseEvent ) {
        trace(">>>>>>>> rollOverUserListener()  e.currentTarget.name : " + e.currentTarget.name);
        trace("e.currentTarget.alpha: " + e.currentTarget.alpha);
        trace("e.currentTarget.visible: " + e.currentTarget.visible);           
        e.currentTarget.rollOverAction(); //just scales the icon a little
        //fade up/down the appropriate path
        worldMap.resetPaths(); //turns off all the paths
        for (var i=0; i<users.length; i++){
            if ( e.currentTarget == users[i] ) { //highlight the right path
                worldMap.highlightPath(i);
            }
        }
    }


    private function rollOutUserListener ( e:MouseEvent ) {
        trace("<<<<<<<< rollOutUserListener()  e.currentTarget.name : " + e.currentTarget.name);
        e.currentTarget.rollOutAction(); //scales down the icon to normal
        worldMap.resetPaths();
    }

【问题讨论】:

  • 可能与你不知不觉播放的时间线有关?您是否使用了不止一帧的时间线,或使用了任何 Event.ENTER_FRAME 事件?
  • 好问题亚历克斯。我没有在主时间线上使用任何额外的帧。我还只是在主时间线中的唯一帧中添加了一个 stop() 动作,以防万一...... :)
  • 您使用的是 Mac 吗?我的一位喜欢 Mac Pro 的同事经常在 IDE 中遇到这个问题,而我们从未找到解决方案。

标签: actionscript-3


【解决方案1】:

我认为通过发布您所做的代码来尝试解决此问题并不高效。

但是,我的猜测是您看到的行为差异是由于 Flash 播放器版本造成的。

CS5 或您拥有的任何版本的 flash 都带有当时最新的播放器。但 Flash 播放器在不断升级,因此当您在浏览器中时——您很可能拥有最新的 Flash 播放器。这可能是您看到的差异的原因。

但是,如果没有看到 highlightPaths 和 resetPaths 函数,上面的代码并没有多大帮助。我看到你有一个跟踪,但在那之后——执行的代码可能很容易改变你在渲染帧之前跟踪的任何东西的状态。

在该代码之后添加一些痕迹,看看您是否得到了预期的结果。

您是否正在使用任何可能只有较新的 Flash 播放器支持的功能的库?

【讨论】:

    【解决方案2】:
    private function rollOverUserListener ( e:MouseEvent ) {
        trace(">>>>>>>> rollOverUserListener()  e.currentTarget.name : " + e.currentTarget.name);
        trace("e.currentTarget.alpha: " + e.currentTarget.alpha);
        trace("e.currentTarget.visible: " + e.currentTarget.visible);           
        e.currentTarget.rollOverAction(); //just scales the icon a little
        //fade up/down the appropriate path
        worldMap.resetPaths(); //turns off all the paths
        for (var i=0; i<users.length; i++){
            if ( e.currentTarget == users[i] ) { //highlight the right path
                worldMap.highlightPath(i);
            }
        }
    }
    
    
    private function rollOutUserListener ( e:MouseEvent ) {
        trace("<<<<<<<< rollOutUserListener()  e.currentTarget.name : " + e.currentTarget.name);
        e.currentTarget.rollOutAction(); //scales down the icon to normal
        worldMap.resetPaths();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多