Seltsamer Fehler: "Handler not found in object: #newObject"

Alle Fragen die bei der Arbeit mit Director auftreten können hier gestellt werden. Spezielle Fragen zu 3D, Xtras und Flash sollten in den entsprechenden Foren gestellt werden.

Moderatoren: Bär, Admin

Antworten
Benutzeravatar
Mister_Mitbewohner
Rookie
Beiträge: 4
Registriert: 16.09.2014, 2014 15:58

Seltsamer Fehler: "Handler not found in object: #newObject"

Beitrag von Mister_Mitbewohner » 28.09.2014, 2014 09:29

Hallo,

mir ist dieser Fehler hier schon öfter passiert und ich weiß wirklich nicht, woran es liegt. Ich habe ein Tutorial nachgebaut und den Code dann ein bisschen angepasst. Allerdings kommt jetzt bei Funktionen, die ich kaum angefasst habe und die vorher gingen, ein sehr seltsamer Fehler... und zwar findet Director den Handler "newObject" an der Spritevariablen pSprite nicht mehr...

Es geht um das Anlegen einer NetConnection, was auch mit reinem Tutorial-Code super funktionierte. Nach einer Erweiterung (die das Anlegen der Verbindung aber überhaupt nicht veränderte), erhalte ich folgenden Fehler:

Bild

Der dazugehörige fehlerwerfende Code ist ein Verhalten, das auf dem Button zum Verbinden liegt:

Code: Alles auswählen

global pNetConn
global gUserList
property pSprite

-- INITIALISIERUNG
-- Spritezuweisung in Variable pSprite
-- Cursor überm Button verändern

on beginSprite (me)    
  pSprite = sprite(me.spriteNum)
  pSprite.cursor = 280  
end beginSprite


-- ON MOUSE DOWN
-- eingegebenen namen überprüfen und in globaler Variablen speichern
-- anschließend weiterleiten zu nächstem Fenster

on mouseDown (me)  
  sIch = me.stripSpaces( sprite(3).text ) 
  put "eigener Name ist: "& sIch
  if ((sIch = "") or (sIch = void)) then    
    alert "Bitte geben Sie Ihren eigenen Namen an."     
  else       
    gNameSelbst = sIch    
    if voidP(pNetConn) then
      me.setConnection()
    end if
    me.getUserList()    
    go frame(23)      
  end if  
end mouseDown


-- VERBINDUNG AUFBAUEN
-- Neues NetConnection-Objekt anlegen
-- Callbacks für Statusänderungen und UserList-Aktualisierungen anlegen

on setConnection me  
  pNetConn = pSprite.newObject("NetConnection")  
  pSprite.setCallback(pNetConn,"onStatus",#statusUpdate,me)
  pSprite.setCallback(pNetConn,"clientListChannel",#userListUpdate,me)
    tURL = "rtmp://xxxxxxxx"
  pNetConn.connect(tURL)  
end setConnection


-- STATUS UPDATE

on statusUpdate aArg1, aArg2  
  if (aArg2.code = "NetConnection.Connect.Success") then    
    -- Hier erfolgt später die Sendung des eigenen Videostreams an den Server
  end if  
end statusUpdate


-- USER LIST UPDATE
-- Wird stets aufgerufen, wenn sich der Inhalt der Nutzerliste ändert.
-- Greift alle Namen der Nutzerliste ab und speichert sie in globaler Liste

on userListUpdate aArg1, aArg2  
  luserList = aArg2  
  if   (luserList <> void) then    
    put "-----USER-LIST UPDATE------"
    gUserList = []    
    repeat with counter = 0 to luserList.length -2      
      sname = luserList[counter].label
      gUserList.add(sname)  
    end repeat    
  end if  
end userListUpdate


on stripSpaces (me, aString)  
  -- clear all spaces from the string
  repeat while offset(SPACE,aString)
    tCharIndex = offset(SPACE,aString)
    delete aString.char[tCharIndex]
  end repeat  
  -- return the string
  return aString  
end 
Der Tutorial-Code, auch schon leicht verändert, der aber noch funktionierte, ist folgender. Hier wird die Verbindung in on exitFrame hergestellt. Das hatte ich in meinem Code von oben allerdings auch schon probiert - ohne Erfolg. Daran kann es also nicht liegen. Und bevor jemand fragt: die URL habe ich absichtlich ge-xxx-t. ;-) Selbstverständlich steht da im original die Serveradresse.

Code: Alles auswählen

global gNames
property pCamera
property pInStream
property pMicrophone
property pNetConn
property pOutStream
property pSprite

on exitFrame (me)
  if voidP(pNetConn) then
    me.initiateConnection()
  end if  
end exitFrame

on initiateConnection (me)
  pSprite = sprite(me.spriteNum)
  pNetConn = pSprite.newObject("NetConnection")
  pSprite.setCallback(pNetConn,"onStatus",#myOnStatus,me)
  tURL = "rtmp://xxxxxx"
  pNetConn.connect(tURL)
end initiateConnection

on initiateStreams (me)
  tCamObj = pSprite.newObject("Camera")
  pCamera = tCamObj.get()
  tMicObj = pSprite.newObject("Microphone")
  pMicrophone = tMicObj.get()
  pOutStream = pSprite.newObject("NetStream",pNetConn)
  pOutStream.attachAudio(pMicrophone)
  pOutStream.attachVideo(pCamera)
  pOutStream.publish(gNames.publishName,"live")
  pInStream = pSprite.newObject("NetStream",pNetConn)
  pInStream.play(gNames.subscribeName)
  pVideoClip = pSprite.getVariable("VideoClip",FALSE)
  pVideoClip.attachVideo(pInStream)  
end initiateStreams

on endSprite 
  if not( voidP(pOutStream) ) then
    pOutStream.close()
  end if
  if not( voidP(pInStream) ) then
    pInStream.close()
  end if  
  if not( voidP(pNetConn) ) then
    pNetConn.close()
  end if  
end endSprite

on myOnStatus me, aArg1, aArg2  
  put aArg2.code  
  if (aArg2.code = "NetConnection.Connect.Success") then    
    me.initiateStreams()    
  end if  
end myOnStatus
Hat jemand mit dieser Erscheinung Erfahrungen? Letztes Mal musste ich den Tutorial-Code neu kopieren - obwohl der sich nicht von meinem unterschied (außer neue Funktionen, die jene aber nicht betrafen). Dann gings plötzlich wieder. Ist das ein Bug? Gibt es irgendetwas seltsames zu beachten, worauf ein Normalsterblicher nicht kommt? Ich verzweifle gerade wirklich, weil ich mir das nicht erklären kann...

Über Ideen oder Lösungsmöglichkeiten wär ich sehr dankbar! :-)

Grüße

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast