Skip navigation
lanphonexm
Currently Being Moderated

i used netStream.appendBytes() ,but can not call bitmapData.draw()

Nov 14, 2011 10:51 PM

Tags: #cs5 #help #flash #actionscript3

the tips: Error #2123: Security sandbox violation: BitmapData.draw: cannot access null. No policy files granted access.

 

Here is some sample code

 

package
{
   
import flash.display.Sprite;
   
import flash.filesystem.File;
   
import flash.filesystem.FileMode;
   
import flash.filesystem.FileStream;
   
import flash.media.Video;
   
import flash.net.NetConnection;
   
import flash.net.NetStream;
   
import flash.net.NetStreamAppendBytesAction;
   
import flash.utils.ByteArray;
   
import flash.display.BitmapData;

   
class ByteArrayPlayer extends Sprite
   
{
       
private var _ns:NetStream;
       
private var _nc:NetConnection;
       
private var _video:Video;

       
public function playVideo(path:String):void
       
{
            _nc
= new NetConnection();
            _nc
.connect(null);
            _ns
= new NetStream(_nc);

            _ns.checkPolicyFile = true;

            _video
= new Video();
            addChild
(_video);
            _video
.attachNetStream(_ns);

            _ns
.play(null);
            _ns
.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);

           
var file:File = new File(path);
           
var fileStream:FileStream = new FileStream();
            fileStream
.open(file, FileMode.READ);

           
var bytes:ByteArray = new ByteArray();

            fileStream
.readBytes(bytes);

            _ns
.appendBytes(bytes);
       
}


       
public function getImage(video:Video):BitmapData
       
{
           
var bit:BitmapData = new BitmapData(_video.width, _video.height);
            bit
.draw(_video);            //This will cause the error
           
return bit;
       
}
   
}
}

 

This is only sample code use for an explanation. The error would happen when calling the getImage method while the video is playing.

The error mentions a policy file not found. Since the file is loaded locally there isn't really a place to put a policy file.

Is there a policy setting somewhere that needs to be set or is the BitmapData.draw feature just not available when using appendBytes?

It is a local flv file,  not an ramp stream from a server.


 
Replies

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points