2012-04-02 13 views
3

Ich habe einen Code, der ein Anzeigeobjekt lokal als Bilddatei speichert, aber irgendwann begann es Fehler 2174 zu werfen. Dieser Code wird entweder aus dem Kontext-Menü Click-Ereignis oder Tastaturereignis aufgerufen . Wie Sie sehen können, hat die Filereference nur eine einzige Aktion - also kein Grund für den Fehler 2174, geworfen zu werden.actionscript 3 filereference 'save' wirft Fehler

var sourceBmd:BitmapData = new BitmapData(displayObject.width,displayObject.height);    
sourceBmd.draw(displayObject,new Matrix(displayObject.width,0,0,displayObject.height)); 
var jpgEncoder:JPGEncoder = new JPGEncoder(80); 
var byteArray:ByteArray = jpgEncoder.encode(sourceBmd); 
try 
{ 
    filereference.save(byteArray,"posterImage.jpg");  
} 
catch (e:Error) 
{ 
    Debugging.alert("error: ",e.message);   
} 

für den Fall, dass Sie sich wundern - ich veröffentliche für Flash-Player 10.0

UPDATE: Ich fand es hat es mit der Flash-Player-Version zu tun: auf 10.3 funktioniert es, während auf 11.1 wenn fehlschlägt.

irgendwelche Ideen? Prost, eRez

+0

Bitte stellen Sie sicher, dass für Flash Player Version 10.0.0 oder höher –

+0

ich tun bauen - das ist nicht für eine sehr lange geändert hat, während – eRez

+0

Kontrolle der Post von @The_asMan. Sie können save() nicht programmatisch auslösen. Es muss sich in einer "Benutzeraktions-Handler-Funktion" befinden. Wie zum Beispiel in der Handler-Funktion eines Button-Klicks. –

Antwort

0

Ist this link Ihr Problem zu lösen?

Haben Sie auch versucht, Flash IDE neu zu starten, nachdem der Fehler aufgetreten ist?

+0

Ich stieß auf diesen Link bei der Suche nach einer Antwort. Das Problem tritt auf, wenn ich innerhalb eines Browsers arbeite, also sehe ich nicht, wie das Neustarten der IDE es beeinflussen würde. – eRez

+0

Der Grund, warum ich Sie fragte, dass Sie plötzlich den Fehler bekommen, ist, warum ich Sie gebeten habe, die Dinge neu zu starten. Oft in Flash-Kommunikation, Dinge nicht wirklich eine kleine Veränderung widerspiegeln ... – loxxy

0

durch durch die docs lesen, kann ich davon ausgehen:

  1. Sie laufen in Flash Player 10
  2. Sie rufen Sie nicht filereference.cancel() in solchen Fällen, wenn der Benutzer klickt auf „Abbrechen“ oder „schließen "auf der Dialogbox, die sich öffnet; versuchen Sie es
+0

Danke, aber ich habe auch gelesen, dass doc, und ich rufe 'cancel()' bei Bedarf, aber das Problem auftritt, auch wenn ich nicht klicke die Abbrechen-Taste – eRez

+0

der einzige andere Vorschlag, den ich mir vorstellen kann: schnappen Sie sich den Code aus dem Teil ** Speichern von Daten in lokalen Dateien ** von [hier] (http://help.adobe.com/de_DE/as3/dev /WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html); Probieren Sie es mit und ohne 'fileRef.cancel()' in geeigneten Fällen. Überprüfen Sie, ob sie den gleichen Fehler auslösen. Wenn sie es tun, dann würde ich in die Neuinstallation von Playern, Browser-Plugins, IDE (Voodoo-Tänze - wenn es Flash Builder ist) gehen. Wenn sie den Fehler nicht werfen, würde ich den Unterschied zwischen Ihrem Code und Adobe prüfen. Ist dies der einzige Ort, an dem Sie 'FileReference' in Ihrem Projekt verwenden? –

2
+0

danke, aber es wird von Benutzerinteraktion aufgerufen - entweder Kontextmenü Ereignis oder Tastaturereignis - beide produzieren die gleiche Fehler und ja - ich veröffentliche für Version 10.und ja, ich lese auch das doc, also nein - ich habe keinen anderen Dateiverweis zur selben Zeit aktiv. – eRez

+0

Veröffentlichen Sie die Ablaufverfolgung, wenn der Fehler auftritt –