2011-03-15 117 views
3

有沒有辦法檢測Flash Player的本地存儲設置面板上的關閉事件?SecurityPanel關閉事件

package 
{ 
    import flash.display.Sprite; 

    import flash.system.Security; 
    import flash.system.SecurityPanel; 

    import flash.system.fscommand; 

    import flash.media.Video; 
    import flash.media.Camera; 
    import flash.media.Microphone; 

    import flash.net.NetStream; 
    import flash.net.NetConnection; 

    import flash.events.FocusEvent; 
    import flash.events.NetStatusEvent; 

    [SWF (width="320", height="240", backgroundColor="#ffffff", frameRate="10")] 
    public class Publisher extends Sprite 
    { 
     public var nc: NetConnection; 
     public var ns: NetStream; 

     public var video:Video; 
     public var camera: Camera; 
     public var microphone: Microphone; 

     public function stage_FocusEvent(e:FocusEvent):void { 
      stage.removeEventListener(FocusEvent.FOCUS_IN, stage_FocusEvent); 
      checkAccess(); 
     } 

     public function checkAccess():void { 
      if (camera.muted) { 
       stage.focus = this; 
       stage.addEventListener(FocusEvent.FOCUS_IN, stage_FocusEvent); 
       Security.showSettings(SecurityPanel.PRIVACY); 
      } 
      else { 
       connect(); 
      } 
     } 

     public function ns_onStatus(e:NetStatusEvent):void { 
      fscommand("NetStream::onStatus", e.info.code); 
     } 

     public function nc_onStatus(e:NetStatusEvent):void { 
      fscommand("NetConnection::onStatus", e.info.code); 

      if (e.info.code != "NetConnection.Connect.Success") return; 

      ns = new NetStream(nc); 
      ns.addEventListener(NetStatusEvent.NET_STATUS, ns_onStatus); 
      ns.attachCamera(camera); 

      microphone = Microphone.getMicrophone(); 
      microphone.gain = 60; 
      ns.attachAudio(microphone); 

      ns.publish(streamId); 
     } 

     public function connect():void { 
      fscommand("connecting", ""); 

      camera.setMode(320, 240, 10, false); 
      camera.setQuality(0, 80); 
      camera.setKeyFrameInterval(3); 

      video = new Video(); 
      video.attachCamera(camera); 

      addChild(video); 

      nc = new NetConnection(); 
      nc.addEventListener(NetStatusEvent.NET_STATUS, nc_onStatus); 
      nc.connect("rtmp://exmaple.com/appName"); 
     }  

     public function Publisher() { 
      stage.showDefaultContextMenu = false; 

      camera = Camera.getCamera(); 
      checkAccess(); 
     } 
    } 
} 
+0

這是我的解決方案 – vinnitu 2011-05-18 08:51:28

回答

0

恐怕沒有這個事件發生。 有關更多信息和可能的解決方法,請參閱this錯誤。

1

我發現這個骯髒的解決方法。當你關閉彈出窗口並且只要你移動鼠標觸發別的東西時,它就會告訴你不完美。

// WHEN PRIVACY PANEL IS ON MOUSE EVENTS ARE DISABLE 
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 
function onMouseMove(e:Event):void {  
    trace("privacy setting closed"); 
    //REMOVE THE LISTENER ON FIRST TIME 
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 

    //dostuff 
}