Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите разобраться (http://www.flasher.ru/forum/showthread.php?t=133014)

nayre 25.11.2009 14:27

Помогите разобраться
 
Собственно вот скрипт вернее его часть целиком не получается из за ограничения в 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

nayre 25.11.2009 14:32

в функции
Код AS3:

                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();
 
                }

Но как это сделать непойму

SamFR 25.11.2009 16:25

Постарайтесь объяснить суть проблемы, и назвать тему хоть чуточку информативнее. Может быть, тогда вам помогут быстрее :)

etc 25.11.2009 18:58

Название темы не отражает сути вопроса.


Часовой пояс GMT +4, время: 07:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.