Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-12-2011, 02:44   #1 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
2 kleine klassen probleme

hallo leute,

ich probiere seit stunden einem drag und drop tutorial 2 kleine erweiterungen zu verpassen.

1. eine function aufrufen die in der hauptzeitleiste liegt:
es geht um diesen teil aus der klasse FileScrap.as :
ActionScript:
  1. private function loadImage(event:Event):void{
  2.                 addChild(event.target.loader)
  3.         // geht nicht:
  4.         //addImage()
  5.         }
2. einen text an ein textfeld zu übergeben:
klasse Scrap.as :
ActionScript:
  1. } else if(data.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)){
  2.                 var dropfiles:Array = data.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
  3.                 for each (var file:File in dropfiles)
  4.                 {
  5.                     scrap = new FileScrap(file);
  6.                     // geht nicht:
  7.                     //myfilename.text = file.name
  8.                 }

ich bekomme es einfach nicht hin! ich hoffe es erbarmt sich jemand und schaut sich das mal an.
diese klassen kommunizierung will mir einfach nicht in den kopf.

l.g.
cargos
Angehängte Dateien
Dateityp: zip dragdrop.zip (17,1 KB, 5x aufgerufen)

Geändert von cargos (10-12-2011 um 02:46 Uhr)
cargos ist offline   Mit Zitat antworten
Alt 10-12-2011, 21:25   #2 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Warum sollte das auch so gehen?

Also ich sag mal so. Du machst doch extra eine Klasse, dass diese für sich funktioniert und nicht von der Hauptklasse abhängig ist. Sonst würdest du es doch gleich in die Hauptklasse schreiben.

Wenn die Hauptklasse was machen soll, weil in der Scrap/FileScrap irgendwas passiert, dann solltest du in dieser ein Event auslösen, auf welches die Hauptklasse reagiert. Und dann ist doch schon alles in Butter und eine saubere Sache.

aaaaaaalso

PHP-Code:
...
private var 
_ldr:Loader;
function 
get image():Loader{
    return 
_ldr;
}
private function 
loadImage(event:Event):void{
    
_ldr event.target.loader// wenn das überhaupt notwendig ist - hast du mehr als einen Loader in der Klasse?
    
dispatchEvent(new Event(Event.COMPLETE));//ich denke um complete geht es, oder?

und in der Hauptklasse
PHP-Code:
var fs = new FileScrap();
fs.addEventListener(Event.COMPLETEfs_completeHandler);
...
//bla bla zum laden etc.
function fs_completeHandler(e:Event):void{
    
addChild(e.target.image);  

__________________

flintfabrik.de

Geändert von shin10 (10-12-2011 um 21:31 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 11-12-2011, 00:24   #3 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
erstmal vielen dank für deine antwort.

ich hab das wie von dir beschrieben eingebaut und bekomme diesen fehler im bezug auf var fs = new FileScrap();:
Zitat:
1180: Call to a possibly undefined method FileScrap.
hab ich was übersehen oder muss der pfad angepasst werdern wegen der anderen klasse?
Zitat:
public class Scrap extends Sprite

public class FileScrap extends Scrap
l.g.
cargos
cargos ist offline   Mit Zitat antworten
Alt 11-12-2011, 05:23   #4 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
hmm - hab eben erst deine zip-File gesehen

scrappy.as
PHP-Code:
        private function doPaste():void{
            var 
scrap:Scrap;
            
scrap Scrap.createScrap(Clipboard.generalClipboardstage.stageWidth/4stage.stageHeight/4NativeDragActions.COPY);
            
scrap.addEventListener(Event.COMPLETEscrap_completeHandler);
        }
        function 
scrap_completeHandler(e:Event):void{
            var 
c:Scrap e.currentTarget as Scrap;
            
trace("scrap complete:"c);
            
addChild(c);
                        
//oder eben
                        
addImage();
        } 
FileScrap.as
PHP-Code:
        private function loadImage(event:Event):void{
            
addChild(event.target.loader);  
            
dispatchEvent( new Event(Event.COMPLETE) );
        } 
__________________

flintfabrik.de

Geändert von shin10 (11-12-2011 um 05:50 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 12-12-2011, 18:45   #5 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
sorry irgendwie tut sich da nichts.

wie ruft das dispatchEvent denn meine addImage() function aus der timeline auf?

FileScrap.as
ActionScript:
  1. PHP-Code:
  2.         private function loadImage(event:Event):void{
  3.             addChild(event.target.loader)
  4.             dispatchEvent( new Event(Event.COMPLETE) );
  5.         }
cargos ist offline   Mit Zitat antworten
Alt 12-12-2011, 19:56   #6 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Das Event ruft gar nichts auf, das wird nur ausgelößt.

In deiner Hauptklasse Scrappy brauchst du dann eben noch die Zeile (#4) die einen EventListener anhängt und der reagiert auf das Event, indem er scrap_completeHandler aufruft. Darin wiederum findest du den Aufruf für addImage()

Hat bei mir wunderbar funktioniert.
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 13-12-2011, 02:38   #7 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
irgendwie bekomm ich es nicht gebacken.

ich hab nochmal eine neue .fla (cs4) angehangen die AS beinhaltet.

die frage:
in der .fla ist die function addImage() - wie kann man die aus der function loadImage() aus der klasse FileScrap.as ansprechen?

ich möchte der function addImage() die event.target.loader daten übergeben.
ActionScript:
  1. private function loadImage(event:Event):void{
  2.                 //addChild(event.target.loader); 
  3.         // geht nicht:
  4.         addImage(event.target.loader)
  5.         }



l.g.
cargos
Angehängte Dateien
Dateityp: zip dragdrop_neu.zip (14,1 KB, 2x aufgerufen)

Geändert von cargos (13-12-2011 um 02:39 Uhr)
cargos ist offline   Mit Zitat antworten
Alt 13-12-2011, 09:45   #8 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Zitat:
Zitat von cargos Beitrag anzeigen
die frage:
in der .fla ist die function addImage() - wie kann man die aus der function loadImage() aus der klasse FileScrap.as ansprechen?

ich möchte der function addImage() die event.target.loader daten übergeben.
ActionScript:
  1. private function loadImage(event:Event):void{
  2.                 //addChild(event.target.loader); 
  3.         // geht nicht:
  4.         addImage(event.target.loader)
  5.         }
Du solltest, wie shin es beschrieben hat, ein Event dispatchen.
Anstatt also die Funktion so aufzurufen (was nicht funktioniert), erzeugst du das Event, sozusagen als "Bitte um Bearbeitung".
Deine Zeitleiste hört die Bitte und führt die funktion aus.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 13-12-2011, 19:33   #9 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
wie gesagt - es funktioniert halt nicht. keine ahnung was ich falsch mache.
ich gebs auf...
cargos ist offline   Mit Zitat antworten
Alt 13-12-2011, 20:55   #10 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Hier deine alte Version mit meinen Änderungen - checks aus.

Winners don't quit

... ach ja, und sie nehmen keine Drogen! *rofl
Angehängte Dateien
Dateityp: zip scrapding.zip (32,0 KB, 1x aufgerufen)
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 14-12-2011, 03:26   #11 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
danke für dein beispiel.
allerdings möchte ich wie gesagt eine function in der timeline aufrufen - in deinem beispiel bleibt es ja innerhalb der klassen.

was muss man denn ändern um die function in der timeline aufzurufen?
(ich hab nochmal eine neue .fla angehangen um das zu verdeutlichen - AS ist in den schlüsselbildern)

l.g.
cargos
Angehängte Dateien
Dateityp: zip dragdrop_neu.zip (14,1 KB, 0x aufgerufen)

Geändert von cargos (14-12-2011 um 03:28 Uhr)
cargos ist offline   Mit Zitat antworten
Alt 14-12-2011, 08:12   #12 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Versteh ich ehrlich gesagt nicht. Erstens ist das was du auf der Timeline schreibst zwar framescript, aber Teil der Hauptklasse. Zweitens ist das nicht sonderlich sicher, da es ja sein könnte, dass die Funktion noch nicht definiert ist (wenn sie in Frame 1 steht, dann kann sie ja gleich richtig in die Hauptklasse). Drittens ... dann muss der ganze Code der Hauptklasse halt einfach aufs frame. (Nur wozu?)

btw. framescript gibt es nur in MovieClips, nicht in Sprites wie in deiner Hauptklasse angelegt.
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 14-12-2011, 09:02   #13 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Zitat:
Zitat von cargos Beitrag anzeigen
allerdings möchte ich wie gesagt eine function in der timeline aufrufen - in deinem beispiel bleibt es ja innerhalb der klassen.
Hallo!

Ich halte es generell für eine Unsitte, Code auf die Zeitleiste zu knallen. Schlimmer ist es nur noch, wenn man dann zusätzlich noch Klassen benutzt. Lass dein Projekt zwei Wochen liegen und schau es dir dann wieder an: Du wirst nicht mehr durchsehen. Daher ein genereller Tipp: Wenn du dich auf die Arbeit mit Klassen konzentrierst, dann ignoriere bitte diese Zeitleiste, oder noch besser: Lass Flash einfach zu und arbeite mit einer gescheiten IDE. (FlashDevelop für Win, FDT für Mac). Über kurz oder lang stolperst du bei der von dir angestrebten Herangehensweise über Probleme, die Hinweise von shin10 sind daher durchaus berechtigt!

Liebe Grüße
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 14-12-2011, 19:47   #14 (permalink)
squarepants™
 
Benutzerbild von cargos
 
Registriert seit: Nov 2009
Beiträge: 181
manchmal ist man halt gezwungen in ein projekt etwas einzubauen auch wenn es nicht schön ist - das ist hier der fall.

ich hab nur ein beispiel angehangen das meine situation zeigt in der hoffnung das einer mit helfen kann. (dragdrop_neu.zip)


ich gebs aber echt auf jetzt....

Geändert von cargos (14-12-2011 um 19:48 Uhr)
cargos ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2 kleine probleme :-) mauiwaui Flash MX 7 29-08-2005 21:41
kleine frage (x/y probleme) enya ActionScript 1 10 18-05-2004 20:55
paar kleine probleme hellwoofer Flash 4 und Flash 5 7 19-02-2003 09:10
2 kleine Probleme !!! Pabeno Flash 4 und Flash 5 14 24-08-2001 11:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele