doubleClickv2as3.0 bug及解决方法

一. base 边缘roll触发 热区roll事件;(mac firefox7)

    解决办法:当不能改变base的展开热区位置时,因为mouseX、mouseY在一瞬间被认定为在(5,5)后会马上变为正确值,所以可以在ROLL_OVER后,延迟检测热区是否hit(mouseX,mouseY),结果为真再展开panel

二 expand组件边少一像素bug;(ie89)

         Expanding面板 如果勾选了 Collapse on mouse_out,或者检测StudioEvent.STAGE_MOUSE_OUT触发关闭,根据DC组件代码的计算方式,鼠标在精确移动到边缘1像素时,就会执行Collapse panel,如果这个1像素位置刚好是base的热区,那么又会导致panel再次展开。

   解决: 添加代码检测Collapse和Expand的时间,如果小于一定时间就不展开。

三 进度条没到最后便发出complete事件解决办法。 

    解决:1.重写playPause按钮 不侦听complete事件

                2.重写进度条,让进度条松开后往后退一段距离

     
四  组件属性面板不能修改属性和点击bug;

     描述:组件属性面板最底下有个转动的圈圈,为组件在获取是否有更新。在某些情况(暂时不知道),会出现获取成功则不能再点击和修改组件属性。(vision 2.1.1)

    解决:运用Fiddler2或者其他软件禁止本地访问 http://dl.google.com/studio/components/flash/DclkStudioManifest.xml

五  animated expand 调用interacte函数 bug

    描述:animate展开时,用expand组件调用interact函数.正常调用顺序为:btn roll over-->expand out-->interact-->mouseout,当快速移出时,interact 跟mouseout有个时间差,会造成调用顺序为:btn roll over-->expand out-->mouseout-->interact,结果是移出去后再次展开。

  解决方法:mouseout后设置isMouseOut=true;rollover后设置isMouseOut=false;再在interact函数内判断时候鼠标在热区,如果不在就collapse;

六  expand 970x66 面积过大停止渲染bug(chrome)

     描述:当做大尺寸expand时候,panel 在chrome浏览器下会停止渲染。

     解决办法:panel主舞台做多个帧,让他们循环播放,然后做两个alpha=0元件,强制舞台渲染。或者做个程序控制运动的透明剪辑。都必须放在最顶层。必须放在parent里 而且在parent区域内

七 AdvancedVideoplayer多视频播放expand类型鼠标快速进出报错bug

    描述:当做expand类型 panel里是多视频组件时,expand快速展开关闭,会报一个找不到videoplayerControl实例的错误,这是doubleclick自身的bug关闭collapse complete后仍然有panel里的程序在执行,当快速展开关闭的时候就会出现。

    解决方法:替换EnablerComponent.as文件,如果找不到videoplayer,在expand里判断if(this.parent)return;则可以解决。

八 Videoplayer组件buffer time报错

    描述:2.1.1组件buffertime填了时间会报错 

九  项目中侦听不到某些视频的STOP,PLAY等事件,一般都是因为flv视频编码后丢失了某些信息造成的,发现这种情况用AE或Adobe Encore 来压制flv视频。尽量不要用第三方的软件。然后,音频就算不需要,也不能随便去掉,会造成偶尔replay不从头播放的问题。

十  在collapse中添加视频使用vid.getElapsedSeconds()空对象报错bug:

    描述:vid.getElapsedSeconds()方法里调用 getCurrentVideoController().getNetStream().time,当netStream还没初始化完成的时候调用会报错。

   解决方法:加个侦听事件:videoPlayer.addEventListener(StudioVideoEvent.NET_STREAM_AVAILABLE,netStreamAvailableHandler);

  或者在报错的地方写try{}catch(e){}

十一  在collapse中有视频,加ProxyEnabler.init(this) 报错bug:

    描述:会报一个onmousemoveHandle找不到空对象bug

   解决方法:去掉collapse中ProxyEnabler.init(this);(谔谔,这个写错了)

十二  expanded没加载完,快速rollover out报错

   描述:如果expanded是主时间轴动画的话,rollover展开,rolloui关闭,这样快速进出,会有相当的频率报一个加载失败的错误。

   解决方法:expanded如果是时间轴的,就将舞台的动画放一个影片剪辑里去。

十三 exit后谷歌重新展开

  描述 windows谷歌浏览器在exit后重新展开,是因为exit后,如果正好是rollover epxnad热区,那么会执行一个rollover事件,就重新展开了。

  解决方法 settimeout

十四 user-click-to play-video没缓冲完就点击播放,缓冲完不会播放bug。

   描述:如果是用户点击才播放的视频,没点击之前开始缓冲,缓冲完的条件下,用户点击是可以正常播放的,但是没缓冲完的情况下,如果用户点击video.play,是不会播放的,视频会继续加载,就算缓冲完也不会播放,而是等一个播放指令。ps:StudioVideoEvent.NETSTREAM_BUFFER_FULL没有反应。

  解决:点击后加上这一句vid.getCurrentVideoController().setPostBufferCallback(function() { trace("bafferd-------"); vid.play(); } );

十五 流媒体格式videoplayerAdvanced未缓冲完切换视频流混乱bug

  描述:如果是流媒体格式的videoplayerAdvanced,在一个视频在缓冲,就切换就另外个视频,那么第一个视频缓冲完就会自动播放,有声音,这时候会出现多个视频的声音一起出现的情况

  解决方法:buffered事件后判断事件的目标的videocontroller是否是当前应该播放的videocontroller,如果不是停掉。另外也要判断声音的开关,这方面也有问题。

十六:如果不用组件加载,得用getUrl()这个方法取得文件的绝对地址,相对地址不准确

 

十七:eventPhase=2 text="Error #2036: 加载未完成。 URL: http://s0.2mdn.net/ads/richmedia/studio/20148201/22166938_1346729105417_300x250_bugTest_joneX.swf"]:解决办法:加一个IOErrorEvent时间侦听

 

十八:mac Chrome浏览器,如果按钮超出底部边缘 可能会造成当鼠标从按钮那移出舞台的时候不触发roll out事件。

 

十九:flash player 9+,as3 遮罩失效:去掉mask.catchAsBitmap=true;改为在属性面板里标出。

二十:videoplayer seek不准:seek只能seek到关键帧,用adobe encode 转码为1帧或者几帧。

二十一:快速roll over out不展开:DC设置了100ms非响应时间:上次collpase 以后100ms内再次要调用expand(),DC会忽略这个请求。

     解决办法:TweenLite.delayedCall,过50毫秒检测一次,鼠标是否在热区内

原文地址:https://www.cnblogs.com/1000pen/p/2742299.html