Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash JWPlayer闪存插件内存泄漏_Flash_Plugins_Jwplayer - Fatal编程技术网

Flash JWPlayer闪存插件内存泄漏

Flash JWPlayer闪存插件内存泄漏,flash,plugins,jwplayer,Flash,Plugins,Jwplayer,我将这个Flash插件修改为JWPlayer,但有些人认为它会使我的播放器崩溃。当我改变视频时会发生这种情况,所以我猜这不是删除元素和关闭插件。我试着用console记录所有的事情,当改变视频时,它会停止console.logging,所以我不知道这个假设 package { import com.longtailvideo.jwplayer.events.*; import com.longtailvideo.jwplayer.player.*; import com.

我将这个Flash插件修改为JWPlayer,但有些人认为它会使我的播放器崩溃。当我改变视频时会发生这种情况,所以我猜这不是删除元素和关闭插件。我试着用console记录所有的事情,当改变视频时,它会停止console.logging,所以我不知道这个假设

package {
    import com.longtailvideo.jwplayer.events.*;
    import com.longtailvideo.jwplayer.player.*;
    import com.longtailvideo.jwplayer.plugins.*;

    import flash.display.*;
    import flash.events.*;
    import flash.utils.*;
    import flash.text.*
    import flash.net.*;
    import flash.geom.*;
    import flash.external.ExternalInterface;

    /** An example plugin that tests various player integrations. **/
    public class APITester extends Sprite implements IPlugin6 {

        private var api:IPlayer;
        private var player:IPlayer;
        private var maskedClip:MovieClip;
        private var tickertop:TextField;
        private var tickermid:TextField;
        private var tickertopBg:Sprite;
        private var tickermidBg:Sprite;
        private var pluginConfig:PluginConfig;
        private var isPlaying:Boolean;
        private var randNumber:Number;

        public function get id():String {
            return "apitester";
        };

        public function get target():String {
            return "6.0";
        }

        public function APITester() {
            tickertopBg = new Sprite();
            tickertop = new TextField();
            tickermidBg = new Sprite();
            tickermid = new TextField();
            ExternalInterface.call("console.log", randNumber + " : " + "0");
            randNumber = Math.floor(Math.random() * (1 - 500000 + 1)) + 5000000;
        };

        public function initPlugin(player:IPlayer, config:PluginConfig):void {
            ExternalInterface.call("console.log", randNumber + " : " + "Start");
            api = player;
            player = player;

            tickertop.htmlText = config['ticker1'];
            tickermid.htmlText = config['ticker2'];

            tickertopBg.graphics.beginFill(0xe3bfa3,1);
            tickertopBg.graphics.drawRect(0,0,stage.stageWidth,30);
            tickertopBg.x = 0;
            tickertopBg.y = 0;
            tickertopBg.visible = false;
            tickertopBg.alpha = 0;
            tickertopBg.graphics.endFill();
            addChild(tickertopBg); 

            var tickertopFormat:TextFormat = new TextFormat();
            tickertopFormat.font = "PT Sans";
            tickertopFormat.color = 0x000000;
            tickertopFormat.size = 20;
            tickertopFormat.bold = true;

            tickertop.setTextFormat(tickertopFormat);
            tickertop.autoSize = TextFieldAutoSize.LEFT;
            tickertop.x = 0;
            tickertop.y = 0;
            tickertop.height = 30;
            tickertop.visible = false;
            tickertop.alpha = 0;
            //tickertop.width = stage.stageWidth;
            tickertop.textColor = 0x000000;
            addChild(tickertop);

            tickermidBg.graphics.beginFill(0x000000,1);
            tickermidBg.graphics.drawRect(0,0,stage.stageWidth,20);
            tickermidBg.x = 0;
            tickermidBg.y = 30;
            tickermidBg.visible = false;
            tickermidBg.alpha = 0;
            tickermidBg.graphics.endFill();
            addChild(tickermidBg); 

            var tickermidFormat:TextFormat = new TextFormat();
            tickermidFormat.font = "PT Sans";
            tickermidFormat.size = 16;
            tickermidFormat.bold = true;

            tickermid.setTextFormat(tickermidFormat);
            tickermid.autoSize = TextFieldAutoSize.LEFT;
            tickermid.x = 0;
            tickermid.y = 29;
            tickermid.visible = false;
            tickermid.alpha = 0;
            tickermid.height = 20;
            //tickermid.width = stage.stageWidth;
            //tickermid.textColor = 0xFFFFFF;
            addChild(tickermid);

            api.addEventListener(MediaEvent.JWPLAYER_MEDIA_COMPLETE, completeHandler);

            api.addEventListener(Event.ENTER_FRAME,EnterFrame);

            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseOverStage);

            function mouseOverStage(evt:Event):void
            {
                ExternalInterface.call("console.log", randNumber + " : " + "3");
                hideItems();
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseOverStage);
                stage.addEventListener(Event.MOUSE_LEAVE, mouseOut);
            }

            function mouseOut(evt:Event):void
            {
                ExternalInterface.call("console.log", randNumber + " : " + "2");
                showItems();
                stage.removeEventListener(Event.MOUSE_LEAVE, mouseOut);
                stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseOverStage);
            }

            api.addEventListener(PlayerStateEvent.JWPLAYER_PLAYER_STATE, stateHandler);

        };

        public function EnterFrame(event:Event):void {
            ExternalInterface.call("console.log", randNumber + " : " + "2");
            if (isPlaying) {
                tickermid.x -= 5;
                ExternalInterface.call("console.log", randNumber + " : " + "20");
                if(tickermid.x < -(tickermid.width)) {
                    ExternalInterface.call("console.log", randNumber + " : " + "21");
                    tickermid.x = stage.stageWidth;
                }
                if(tickermid.x > (stage.stageWidth)) {
                    ExternalInterface.call("console.log", randNumber + " : " + "22");
                    tickermid.x = -(tickermid.width);
                }

                tickertop.x -= 4;
                if(tickertop.x < -(tickertop.width)) {
                    ExternalInterface.call("console.log", randNumber + " : " + "23");
                    tickertop.x = stage.stageWidth;
                }
                if(tickertop.x > (stage.stageWidth)) {
                    ExternalInterface.call("console.log", randNumber + " : " + "24");
                    tickertop.x = -(tickermid.width);
                }
            }   
        }

        public function showItems():void {
            if (isPlaying) {
                tickertopBg.visible = true;
                tickertopBg.alpha = 1;
                tickertop.visible = true;
                tickertop.alpha = 1;

                tickermidBg.visible = true;
                tickermidBg.alpha = 1;
                tickermid.visible = true;
                tickermid.alpha = 1;
            }
        };

        public function hideItems():void {
            tickertopBg.visible = false;
            tickertopBg.alpha = 0;
            tickertop.visible = false;
            tickertop.alpha = 0;

            tickermidBg.visible = false;
            tickermidBg.alpha = 0;
            tickermid.visible = false;
            tickermid.alpha = 0;
        };

        private function completeHandler(evt:MediaEvent):void {
            api.removeEventListener(Event.ENTER_FRAME,EnterFrame);
            isPlaying = false;
        };

        private function stateHandler(event:PlayerStateEvent):void {
            switch (event.newstate) {
                case PlayerState.PAUSED:
                    ExternalInterface.call("console.log", randNumber + " : " + "50");
                    break;
                case PlayerState.PLAYING:
                    ExternalInterface.call("console.log", randNumber + " : " + "51");
                    isPlaying = true;
                    showItems();
                    break;
                case PlayerState.IDLE:
                    ExternalInterface.call("console.log", randNumber + " : " + "52");
                    api.removeEventListener(Event.ENTER_FRAME,EnterFrame);
                    isPlaying = false;
                    hideItems();
                    break;
                case PlayerState.BUFFERING:
                    ExternalInterface.call("console.log", randNumber + " : " + "52");
                    api.removeEventListener(Event.ENTER_FRAME,EnterFrame);
                    isPlaying = false;
                    hideItems();
                    break;
            }
        };

        /** If the player resizes itself, this gets called (including on setup). **/
        public function resize(wid:Number, hei:Number):void {
            ExternalInterface.call("console.log", randNumber + " : " + "6");
            if(stage.stageWidth == 290) {
                var tickertopFormat0:TextFormat = new TextFormat();
                tickertopFormat0.size = 12;

                tickertop.setTextFormat(tickertopFormat0);
                tickertopBg.height = 14;

                //                      
                var tickermidFormat0:TextFormat = new TextFormat();
                tickermidFormat0.size = 10;

                tickermid.setTextFormat(tickermidFormat0);
                tickermidBg.height = 12;

                //
                tickertop.y = hei - (tickertop.height+9);
                tickertopBg.y = hei - (tickertopBg.height+12);

                tickermid.y = hei - (tickermid.height-2);
                tickermidBg.y = hei - (tickermidBg.height);
            } else if(stage.stageWidth > 750 && stage.stageWidth != 290) {
                //
                var tickertopFormat:TextFormat = new TextFormat();
                tickertopFormat.size = 48;

                tickertop.setTextFormat(tickertopFormat);
                tickertopBg.height = 58;

                //                      
                var tickermidFormat:TextFormat = new TextFormat();
                tickermidFormat.size = 26;

                tickermid.setTextFormat(tickermidFormat);
                tickermidBg.height = 36;

                //
                tickertop.y = hei - (tickertop.height+41);
                tickertopBg.y = hei - (tickertopBg.height+41);

                tickermid.y = hei - (tickermid.height+5);
                tickermidBg.y = hei - (tickermidBg.height+5);
            } else {
                //
                var tickertopFormat2:TextFormat = new TextFormat();
                tickertopFormat2.size = 20;

                tickertop.setTextFormat(tickertopFormat2);
                tickertopBg.height = 30;


                //
                var tickermidFormat2:TextFormat = new TextFormat();
                tickermidFormat2.size = 16;

                tickermid.setTextFormat(tickermidFormat2);
                tickermidBg.height = 24;

                //
                tickertop.y = hei - (tickertop.height+21);
                tickertopBg.y = hei - (tickertopBg.height+20);

                tickermid.y = hei - (tickermid.height);
                tickermidBg.y = hei - (tickermidBg.height);
            }

            showItems();

            //
            tickertop.width = stage.stageWidth;
            tickermid.width = stage.stageWidth;
            tickertopBg.width = stage.stageWidth;
            tickermidBg.width = stage.stageWidth;


        };
    }
}
包{
导入com.longtailvideo.jwplayer.events.*;
导入com.longtailvideo.jwplayer.player.*;
导入com.longtailvideo.jwplayer.plugins.*;
导入flash.display.*;
导入flash.events.*;
导入flash.utils。*;
导入flash.text*
导入flash.net。*;
导入flash.geom.*;
导入flash.external.ExternalInterface;
/**测试各种播放器集成的示例插件**/
公共类ApitTester扩展了Sprite实现IPlugin6{
私有var-api:IPlayer;
私人玩家:IPlayer;
私有var maskedClip:MovieClip;
私有变量tickertop:TextField;
私有变量tickermid:TextField;
私有变量:Sprite;
private-var-rmidbg:Sprite;
私有变量pluginfig:pluginfig;
私有变量显示:布尔值;
私人号码:号码;
公共函数get id():字符串{
返回“apitester”;
};
公共函数get target():字符串{
返回“6.0”;
}
公共功能测试仪(){
tickertopBg=新精灵();
tickertop=新文本字段();
tickermidBg=新精灵();
tickermid=newtextfield();
调用(“console.log”,randNumber+:“+”0”);
randNumber=Math.floor(Math.random()*(1-500000+1))+5000000;
};
公共函数initPlugin(player:IPlayer,config:PluginConfig):void{
调用(“console.log”,randNumber+:“+”Start”);
api=播放器;
玩家=玩家;
tickertop.htmlText=config['ticker1'];
tickermid.htmlText=config['ticker2'];
tickertopBg.graphics.beginll(0xe3bfa3,1);
tickertopBg.graphics.drawRect(0,0,舞台宽度,30);
tickertopBg.x=0;
tickertopBg.y=0;
tickertopBg.visible=false;
tickertopBg.alpha=0;
tickertopBg.graphics.endFill();
addChild(tickertopBg);
var tickertopFormat:TextFormat=新的TextFormat();
tickertopFormat.font=“PT Sans”;
tickertopFormat.color=0x000000;
tickertopFormat.size=20;
tickertopFormat.bold=true;
tickertop.setTextFormat(tickertopFormat);
tickertop.autoSize=TextFieldAutoSize.LEFT;
tickertop.x=0;
tickertop.y=0;
tickertop.height=30;
tickertop.visible=false;
tickertop.alpha=0;
//tickertop.width=stage.stageWidth;
tickertop.textColor=0x000000;
addChild(tickertop);
tickermidBg.graphics.beginll(0x000000,1);
tickermidBg.graphics.drawRect(0,0,stage.stageWidth,20);
tickermidBg.x=0;
tickermidBg.y=30;
tickermidBg.visible=false;
tickermidBg.alpha=0;
tickermidBg.graphics.endFill();
addChild(tickermidBg);
var tickermidFormat:TextFormat=newtextformat();
tickermidFormat.font=“PT Sans”;
tickermidFormat.size=16;
tickermidFormat.bold=true;
setTextFormat(tickermidFormat);
tickermid.autoSize=TextFieldAutoSize.LEFT;
tickermid.x=0;
tickermid.y=29;
tickermid.visible=false;
tickermid.alpha=0;
tickermid.height=20;
//tickermid.width=stage.stageWidth;
//tickermid.textColor=0xFFFFFF;
addChild(tickermid);
api.addEventListener(MediaEvent.JWPLAYER\u MEDIA\u COMPLETE,completeHandler);
api.addEventListener(事件。输入帧,输入帧);
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseOverStage);
函数mouseOverStage(evt:事件):void
{
调用(“console.log”,randNumber+:“+”3”);
hideItems();
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseOverStage);
stage.addEventListener(Event.MOUSE\u LEAVE,mouseOut);
}
函数mouseOut(evt:事件):无效
{
调用(“console.log”,randNumber+:“+”2”);
showItems();
stage.removeEventListener(Event.MOUSE\u LEAVE,mouseOut);
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseOverStage);
}
api.addEventListener(PlayerStateEvent.JWPLAYER\u PLAYER\u STATE,stateHandler);
};
公共函数EnterFrame(事件:事件):无效{
调用(“console.log”,randNumber+:“+”2”);
如果(显示){
tickermid.x-=5;
调用(“console.log”,randNumber+:“+”20”);
如果(勾号x<-(勾号宽度)){
调用(“console.log”,randNumber+:“+”21”);
tickermid.x=stage.stageWidth;
}
如果(tickermid.x>(stage.stageWidth)){
调用(“console.log”,randNumber+:“+”22”);
tickermid.x=-(tickermid.width);
}
tickertop.x-=4;
如果(tickertop.x<-(tickertop.width)){
调用(“console.log”,randNumber+:“+”23”);
tickertop.x=stage.stageWidth;
}
如果(tickertop.x>(stage.stageWidt