Помогите разобраться
Собственно вот скрипт вернее его часть целиком не получается из за ограничения в 12к символов.
Код AS3:
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
Security.allowDomain("*");
_initParams();
_init ( ) ;
// _drawImageBox();
}
private function _initParams ( ) : void
{
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
if (paramObj.hasOwnProperty('path'))
_path = paramObj['path'];
else
_path = "http://ady/Development/imgUpload/production";
}
private function _init ( ) : void
{
uploadBT.label = "Upload";
uploadBT.addEventListener(MouseEvent.CLICK, _handleUploadEvent);
_cueList = new Dictionary(true);
_gridPresenter = new GridPresenter(352, 155, 352, 52);
addChild(_gridPresenter);
_gridPresenter.y = 63;
_gridPresenter.x = 12;
_browseBtn = browseBT;// new SimpleButton ( ) ;
_browseBtn.label = "Browse";
_browseBtn.useHandCursor = true;
_browseBtn.addEventListener ( MouseEvent.CLICK, _handleMouseEvent ) ;
_fileFilter = new FileFilter ( "Image", "*.jpg;*.gif;*.png;" ) ;
}
private function encodingComplete() {
// trace('end of commands ...');
// return;
_uploading = false;
statusMsg.text = 'Sending files ..';
_thereCanBeOnlyOneURLLoader.load( urlRequest );
trace('handle all finished events ..');
}
var urlRequest : URLRequest;
private function uploadNextFile() {
_currentFileToUpload++
if (_currentFileToUpload >= _gridPresenter.totalItems){
encodingComplete();
return;
}
var imgStrip:ImageStrip = _gridPresenter.getItemAt(_currentFileToUpload);
_currentUploadedImg = _cueList[imgStrip];
//var e:Error = new Error("Current call stack:");
//var s:String = e.getStackTrace();
//trace(_currentUploadedImg+'--'+ imgStrip.fileName,s);
//var btData:BitmapData = _currentUploadedImg._img.resizeBitmapData(_MAX_WIDTH, _MAX_HEIGHT);
var btArray:ByteArray = imgStrip.encodedByteArray;
// set up the request & headers for the image upload;
if (!urlRequest){
urlRequest = new URLRequest();
urlRequest.url = _path+'/receiveFile.php';
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
urlRequest.method = URLRequestMethod.POST;
urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );
}
var newBArray:ByteArray = UploadPostHelper.getPostData( imgStrip.fileName, btArray, null, _currentFileToUpload );
var currBArray:ByteArray = urlRequest.data as ByteArray;
if(currBArray)
currBArray.writeBytes(newBArray);
else
currBArray = newBArray;
urlRequest.data = currBArray;
/* var sNode:NirvanixStorageNode = new NirvanixStorageNode();
sNode.fileName = imgStrip.fileName;
sNode.destFolderPath = "/";
sNode.host = _path + '/receiveFile.php';
sNode.uploadToken = '1234';
var uploader:NirvanixBinaryUploader = new NirvanixBinaryUploader(sNode, btArray);
uploader.upload();*/
// create the image loader & send the image to the server;
uploadNextFile();
}
private function _handleUploadEvent (evnt:MouseEvent):void {
if (_uploading)
return;
if (_gridPresenter.totalItems == 0)
{
statusMsg.text = 'No files to upload..';
return;
}
for (var k = 0; k < _gridPresenter.totalItems; k++) {
var tmpStrip:ImageStrip = _gridPresenter.getItemAt(k);
if (tmpStrip.isEncoding) {
statusMsg.text = 'Wait for encoding to end.';
return;
}
}
_uploading = true;
_currentFileToUpload = -1;
statusMsg.text = 'Preparing files ..';
evnt.updateAfterEvent();
if (!_thereCanBeOnlyOneURLLoader) {
_thereCanBeOnlyOneURLLoader = new URLLoader();
_thereCanBeOnlyOneURLLoader.addEventListener(ProgressEvent.PROGRESS, eventFileUploadProgress);
_thereCanBeOnlyOneURLLoader.addEventListener(Event.COMPLETE, eventFileUploadComplete);
_thereCanBeOnlyOneURLLoader.addEventListener(IOErrorEvent.IO_ERROR, eventFileUploadError);
_thereCanBeOnlyOneURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, eventFileUploadError);
_thereCanBeOnlyOneURLLoader.dataFormat = URLLoaderDataFormat.BINARY;
}
uploadNextFile();
trace("total files to upload : " + _gridPresenter.totalItems);
return;
}
private function eventFileInfoError(e:IOErrorEvent) {
trace(e.toString());
}
private function eventFileInfo(e:ProgressEvent) {
var uLoader:URLLoader = URLLoader(e.target);
trace('data:'+uLoader.data);
//op.text+=(e.bytesLoaded+'--'+e.bytesTotal);
}
private function eventFileUploadError(e:*) {
_uploading = false;
trace('error: '+e);
//_img.showStatus("Error!");
}
private function eventFileUploadComplete(e:Event) {
var urlVariables:URLVariables = new URLVariables(e.target.data);
trace('completed '+urlVariables.status );
if (urlVariables.status == 1) {
trace(_originalSize + '-' + urlVariables.size);
statusMsg.text = 'Files Uploaded succesfully.';
//_img.showStatus("<span class='text'>Upload completed : <a target='_blank' href='" + urlVariables.filepath + "' >Download Image</a></span>");
}
else {
statusMsg.text = 'Error uploading files.';
//_img.showStatus("<span class='text'>Upload Failed</span>");
}
_uploading = false;
_currentFileToUpload = -1;
urlRequest.data = null;
ExternalInterface.call('imgUploaded');
//trace((e.target as URLLoader).data);
//uploadNextFile();
}
private function eventFileUploadProgress(e:ProgressEvent) {
trace(e.bytesLoaded + ';' + e.bytesTotal);
}
private function _handleMouseEvent ( evt : MouseEvent ) : void
{
_fileRef = new FileReferenceList ( ) ;
_fileRef.browse ( [_fileFilter] ) ;
_fileRef.addEventListener ( Event.SELECT, _onImageSelect ) ;
}
private function _onImageSelect ( evt : Event ) : void
{
for (var k = 0; k < _fileRef.fileList.length; k++) {
var currFile:FileReference = _fileRef.fileList[k];
currFile.load ( ) ;
currFile.addEventListener ( Event.COMPLETE, _onDataLoaded ) ;
}
// _fileNameTxt.text = String ( evt.target.name ) ;
}
private function _onDataLoaded ( evt : Event ) : void
{
var tempFileRef : FileReference = FileReference ( evt.target ) ;
_loader = new Loader ( ) ;
_loader.name = tempFileRef.name;
_loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, _onImageLoaded ) ;
_originalSize = tempFileRef.data.length;
_loader.name += 'z-z-z-z(' + Math.round(_originalSize/1000) + 'Kb)';
_loader.loadBytes ( tempFileRef.data ) ;
}
private function _onImageLoaded ( evt : Event ) : void
{
var tmpLoader:LoaderInfo = evt.target as LoaderInfo;
var str = tmpLoader.loader.name;
_bitmap = Bitmap ( evt.target.content ) ;
if (_img)
{
_img.dispose();
if (this.contains(_img))
removeChild(_img);
}
_img = new imgBox(_BOX_WIDTH, _BOX_HEIGHT, _bitmap);// new imgHelper(_bitmap);
_img.addEventListener("invalidate", eventImageInvalidated);
//_img.addEventListener("uploadImage", _handleUploadEvent);
//Resize the image if needed
var _imgStrip = new ImageStrip(_bitmap,str);
_imgStrip.addEventListener("stripClicked", _eventImageStripHit);
_imgStrip.addEventListener("removeStrip", _eventRemoveStrip);
_imgStrip.buttonMode = true;
_gridPresenter.addToGrid(_imgStrip);
for (var k = 0; k < _gridPresenter.totalItems; k++)
_gridPresenter.getItemAt(k).selected = false;
_imgStrip.selected = true;
_cueList[_imgStrip] = _img;
_img.x = 390;
_img.y = 12;
addChild ( _img ) ;
}
public function eventImageInvalidated(e:*) {
var theBox:imgBox = e.target;
trace('box invalidated..');
// this is a wacky hack, i don't know if thats really what i should do,
// but i don't have the time to dig any further..
for (var k = 0; k < _gridPresenter.totalItems; k++){
if (_cueList[_gridPresenter.getItemAt(k)] == theBox){
var imgStp:ImageStrip = _gridPresenter.getItemAt(k) as ImageStrip;
imgStp._iHelper.theImage = theBox._img.theImage;
imgStp.eventImageInvalidated();
}
}
}
private function _eventRemoveStrip(e:Event) {
var theTarget:ImageStrip = e.target as ImageStrip;
_gridPresenter.removeFromGrid(theTarget as MovieClip);
var imgBx = _cueList[theTarget];
if (this.contains(imgBx))
removeChild(imgBx);
_cueList[theTarget] = null;
}
private function _eventImageStripHit( e:Event) {
if (this.contains(_img))
removeChild(_img);
var imgBx = _cueList[e.target];
for (var k = 0; k < _gridPresenter.totalItems; k++)
_gridPresenter.getItemAt(k).selected = false;
e.target.selected = true;
_img = imgBx;
addChild ( imgBx ) ;
}
private function _resizeBitmap( target : Bitmap ) : void
{
//var btData:BitmapData = resizeBitmapData(target.bitmapData, .5);
//var newBitmap:Bitmap = new Bitmap(btData);
//return newBitmap;
if ( target.height > target.width ) {
target.width = _MAX_WIDTH;
target.scaleY = target.scaleX;
} else if ( target.width >= target.height ) {
target.height = _MAX_HEIGHT;
target.scaleX = target.scaleY;
}
}
}
Добавлено через 2 минуты
Исходник: исходник
Мне надо что бы в конце загрузки очищался список файлов, по типу события remove
|