Hi,
FileRefList übergibt an LoaderObj ein ByteArray "peter[]", daraus werden bilder auf der Bühne geladen. Mein Array Peter [] wird gespiegelt in mein Array Klaus[];
jetzt lösche ich auf der Stage Bilder die von Peter kommen. X.removechild().
Zeitgleich soll das im Klaus bekannt sein welches Element ich da gelöscht habe mit getChildIndex(). und Klaus.splice(peter.ChildIndex,1);
Später wenn die nicht hochzuladenen Bilder soweit ermittelt und removed sind.
meineUploadFkt(UpArr[i]) ;
soll meine fileRef.upload(URL)
Klappen.
Wie bekommen ich kongruent mein childIndix passen in mein Klaus[] mit splice genau an der position gelöscht wie ich es auf der Stage gemacht habe.
PHP-Code:
public class UploaderPlayer10 extends Sprite
{
/***** IMPLEMENT VARS **********/
private var _spec:SpecificationMX = SpecificationMX.getInstance();
// private var _preLoader:Preloader = Preloader.getInstance();
private var _rHandler:ResultHandler = new ResultHandler();
/****** ********************/
private var fileReference:FileReference = new FileReference();
private var fileRefList:FileReferenceList = new FileReferenceList();
private var loader:Loader;
private var loaderHolder:Sprite;
private var globalffl:FileReferenceList = new FileReferenceList();
private var UpArr:Array = new Array();
private var helperRef :FileReference;
private var imagesFilter:FileFilter = new FileFilter("Images", _spec.paramFileExtensions);
private var docFilter:FileFilter = new FileFilter("Documents", "*.pdf;*.doc;*.txt");
private var mixFilter:FileFilter = new FileFilter("Music", _spec.paramFileExtensionsA)
private var upload_Image:CustomBtn;
private var serverSend:CustomBtn;
//public var phpUploadScript:String = "http://localhost/flash/ImgUploader/bin/upload.php";
public var phpUploadScript:String = _spec.paramPhpPathV10;
public var uploadDir:String = _spec.paramUploadDir;
public var uploadURL:URLRequest;
public var newNameforUpload:String = "" + _spec.paramCompNo + _spec.paramInterviewNo + _spec.paramQNo + UserManualsubtitle ;
public var UserManualsubtitle:String = "_PETERPAN_" // here comes the Name of the User input
private var fileCount:Number;
private var fileID:Number;
//selectedFile.upload('/CIS/'+uploadFile+'/'+path1+'/'+path2+'/'+path3+'/'+paramCompNr+'/'+paramIntNr+'/'+paramQNr+'/'+paramIdent);
// FROM PHP $newPath = $dirPath.'/Upload/'.$tmpArr[4].'-'.$tmpArr[5].'-'.$tmpArr[6].'-'.$tmpArr[7].'-'.$_FILES['Filedata']['name'];
public var progress_txt:TextField;
public var imgName_txt:TextField;
public var imgLabel:String = "";
//public var progress_bar:ProgressBar;
public var bg_mc:MovieClip;
public var editPencil:EditPencil;
public var limit:int ; // Limits the amount of files to upload.
public function UploaderPlayer10() {
super();
}
public function receive():void {
trace("++>>")
init();
}
private function init():void {
trace("I am the NEW Uploder, i load an image on the stage. I can change the Name and finally i upload the image with the filename to the Server")
fileCount = 0;
upload_Image = new CustomBtn(150, 20, _spec.paramButtonText, 0x000000); // _spec.paramButtonText
addChild(upload_Image);
upload_Image.addEventListener(MouseEvent.CLICK,onClick);
upload_Image.show();
serverSend = new CustomBtn( 350, 20, _spec.paramSendBtn, 0x999999);
addChild(serverSend);
serverSend.addEventListener(MouseEvent.CLICK, sendToServer);
serverSend.hide();
progress_txt = new TextField();
addChild(progress_txt);
progress_txt.y = 430;
progress_txt.x = 150
progress_txt.width = 300;
progress_txt.height = 60;
progress_txt.borderColor = 0xc2c2c2;
progress_txt.textColor = 0x999999;
progress_txt.border = true;
progress_txt.wordWrap = true;
uploadDir = uploadDir;
progress_txt.text = "Results:";
// uploadURL = new URLRequest(this.phpUploadScript + "?uploadDir=" + this.uploadDir);
uploadURL = new URLRequest(this.phpUploadScript + "?uploadDir=" + this.uploadDir + "&rename=" + this.newNameforUpload );
fileReference = new FileReference();
loader = new Loader();
}
private function browseImages():void {
fileRefList = new FileReferenceList();
fileRefList.addEventListener(Event.SELECT, selectImages);
fileRefList.browse([imagesFilter,docFilter,mixFilter]);
}
private function selectImages(e:Event):void {
var ffl:FileReferenceList = e.target as FileReferenceList;
var arr:Array=ffl.fileList;
globalffl = ffl;
for (var i:int = 0; i < arr.length; i++) {
loadFileReference(arr[i]);
UpArr.push(arr[i]);
}
}
private function loadFileReference(TempFileReference:FileReference):void {
helperRef = TempFileReference
helperRef.addEventListener(Event.COMPLETE, loadHandler)
helperRef.load();
}
private function loadHandler(e:Event):void {
// Daten aus dem FileRef Obj werden dem loader übergeben.
var data:ByteArray = (e.target as FileReference).data;
var myName:String = (e.target as FileReference).name; // Dateiname beim Upload
loader = new Loader();
loader.name = myName;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE , LoaderOnLoadBytes);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, LoaderUploadProgress)
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderIoError);
// Delayed CALL einfügen
loader.loadBytes(data);
}
private function LoaderOnLoadBytes(e:Event):void {
// Bau von den einzelnen Bildern mit Text&Options-Elementen
loader = e.target.loader;
loader.width = 40;
loader.height = 40;
var point:Point=getThumbsPosition(fileCount);
loader.x=point.x +150;
loader.y = point.y + 80;
loaderHolder = new Sprite();
// loaderHolder.name = "LoaderHolder"
loaderHolder.name = loader.name;
loaderHolder.addChild(e.target.loader);
addChild(loaderHolder);
imgName_txt = new TextField();
imgName_txt.type = TextFieldType.INPUT;
imgName_txt.text = "Name: " + loaderHolder.name + " ARRAY :" + UpArr.length ; // here is the Filename saved of the image which was uploaded ..
imgName_txt.x = loader.x + 60 ;
imgName_txt.y = loader.y ;
imgName_txt.width = 200;
imgName_txt.height = 40;
imgName_txt.border = true;
imgName_txt.multiline = true;
imgName_txt.wordWrap = true;
var editPen:EditPencil = new EditPencil();
editPen.x = loader.x + 285;
editPen.y = loader.y + 26;
var editDelete:EditDelete = new EditDelete();
editDelete.x = loader.x + 285;
editDelete.y = loader.y + 0;
loaderHolder.addChildAt(editPen, 1);
loaderHolder.addChildAt(editDelete, 1);
loaderHolder.addChildAt(imgName_txt, 1);
// progress_txt.text = "" +"Daten stehen zur Verfügung.";
serverSend.show();
fileCount++;
// k++;
loaderHolder.addEventListener(MouseEvent.MOUSE_OVER, hoverImg);
loaderHolder.addEventListener(MouseEvent.MOUSE_OUT, outImg);
editDelete.addEventListener(MouseEvent.CLICK, deleteitem);
// loaderHolder.addEventListener(MouseEvent.CLICK, deleteitem);
LoaderCompleteUpload();
}
private function deleteitem(e:MouseEvent):void {
//var t:DisplayObject = DisplayObject(e.target.parent);
var t:DisplayObject = DisplayObject(e.target.parent );
// progress_txt.text = "" + "filecount: "+ fileCount + " e.target.Parent.Name " +e.target.parent.name + " t.parent.childIndex= " + t.parent.getChildIndex(t) + " LoaderName " + loader.name;
// var myName:DisplayObject = t.parent.parent.getChildByName(loader.name)
// progress_txt.text = "" + - this.numChildren;
/*
setChildIndex(child:DisplayObject, index:int):void
Ändert die Position eines vorhandenen untergeordneten Objekts im Anzeigeobjekt-Container.
*/
var onStage:int = t.parent.numChildren ;
var myNum:int = t.parent.getChildIndex(t);
var corNum:int = onStage - myNum
UpArr.splice(corNum, 1);
loaderHolder.name = "X X X"
////////////////////////////////////
t.parent.removeChild(t);
reduceItems();
///////////////////////////////////
progress_txt.text = " numChildren: " + onStage +"[ Array.lenth: " + UpArr.length + "] CorrNum: " + corNum + " myNum.Index " + myNum ;
}
private function reduceItems():void {
if (fileCount == 0) {
fileCount = 0
} else
fileCount--;
}
private function getThumbsPosition(index:Number):Point {
var rowCount:Number=1;
var imageWidthHeight:Number=40;
var imageGap:Number=10;
var thumbX:Number;
var thumbY:Number;
thumbX = (index % rowCount) * (imageWidthHeight + imageGap);
thumbY = Math.floor(index / rowCount) * (imageWidthHeight + imageGap);
return new Point(thumbX , thumbY);
}
private function onClick(e:MouseEvent):void {
browseImages();
}
private function hoverImg(e:Event):void {
e.target.alpha = .5;
};
private function outImg(e:Event):void {
e.target.alpha = 1;
};
//+++++++++++++++++++++++++++**
// HERE IS THE SERVER UPLOAD *
//+++++++++++++++++++++++++++**
private function sendToServer (e:Event):void {
trace("Upload begins")
// upload_Image.hide();
for (var i:int = 0; i < UpArr.length; i++) {
transServer (UpArr[i]) ;
progress_txt.text = "AUA";
}
}
private function transServer(TFR:FileReference):void {
TFR.removeEventListener(Event.COMPLETE, loadHandler);
TFR.addEventListener(ProgressEvent.PROGRESS, ServerUploadProgress);
TFR.addEventListener(IOErrorEvent.IO_ERROR, ServerIoError);
TFR.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, ServerUploadCompleteSAVED);
TFR.addEventListener(Event.COMPLETE, ServerUploadCompleteTRANSFER);
TFR.upload(this.uploadURL);
}
private function LoaderUploadProgress(e:ProgressEvent):void {
trace(" [FileUploader] progress: " + e.bytesLoaded + " / " + e.bytesTotal);
progress_txt.text = "Upload: "+ Math.round((e.bytesLoaded / e.bytesTotal) * 100) + "%";
}
private function ServerIoError(e:ErrorEvent):void {
trace(" [FileUploader]SERVER IOError: " + e.text);
serverSend.y += 50;
progress_txt.text = "" + "[FileUploader] SERVER IOError: " + e.text;
}
private function LoaderIoError(e:IOErrorEvent):void {
trace(" [FileUploader] IOError: " + e.text);
serverSend.y += 50;
progress_txt.text = "" + "[FileUploader] LOADER IOError: " + e.text;
}
// called from the loader resp. fileref has passed the bytearry to the loader. first complete call
private function LoaderCompleteUpload():void {
trace(" [FileUploader] File Upload Complete");
progress_txt.text = "" +"Daten stehen zur Verfügung.";
serverSend.show();
}
private function ServerUploadProgress(e:ProgressEvent):void {
progress_txt.text = "Upload to Server: "+ Math.round((e.bytesLoaded / e.bytesTotal) * 100) + "%";
}
private function ServerUploadCompleteTRANSFER(e:Event):void {
trace(" [FileUploader] File Upload DATA Complete");
progress_txt.text = "Daten OK. ";
CleanUp();
}
private function ServerUploadCompleteSAVED(e:DataEvent):void {
trace(" [FileUploader] File Upload DATA Complete");
progress_txt.text = "Upload OK ";
}
private function CleanUp():void {
// serverSend.hide();
/*
if (this.numChildren != 0) {
var k:int =this.numChildren;
while (k--)
{
this.removeChildAt( k );
}
}
*/
}