Comment ces vars sont-ils initialisés?
-
05-07-2019 - |
Question
Le code suivant est une combinaison d’échantillons extraits de red5. En gros, j'essaie de combiner un abonné de flux en direct avec une boîte de discussion basée sur des objets partagés. Je ne suis pas un développeur flash et j'ai une compréhension très limitée de ce qui se passe ici.
// ** AUTO-UI IMPORT STATEMENTS **
import org.red5.utils.Connector;
import org.red5.samples.simplechat.BasicChat;
// ** END AUTO-UI IMPORT STATEMENTS **
import com.neoarchaic.ui.Tooltip;
import org.red5.net.Stream;
//import org.red5.utils.Delegate;
import com.blitzagency.xray.util.XrayLoader;
class org.red5.samples.livestream.subscriber.Main extends MovieClip {
// Constants:
public static var CLASS_REF = org.red5.samples.livestream.subscriber.Main;
public static var LINKAGE_ID:String = "org.red5.samples.livestream.subscriber.Main";
// Public Properties:
// Private Properties:
private var stream:Stream;
private var cam:Camera;
// UI Elements:
// ** AUTO-UI ELEMENTS **
private var connector:Connector;
private var publish_video:Video;
private var chat:BasicChat;
// ** END AUTO-UI ELEMENTS **
private var uri:String = "rtmpt://localhost/oflaDemo";
// Initialization:
private function Main() {XrayLoader.loadConnector("xray.swf");}
private function onLoad():Void { configUI(); }
// Public Methods:
// Semi-Private Methods:
// Private Methods:
private function configUI():Void
{
// setup the tooltip defaults
Tooltip.options = {size:10, font:"_sans", corner:0};
// setup cam
cam = Camera.get();
// get notified of connection changes
connector.addEventListener("connectionChange", this);
// set the uri
Connector.red5URI = uri;
// initialize the connector
connector.configUI();
connector.makeConnection();
}
private function connectionChange(evtObj:Object):Void
{
if(evtObj.connected)
{
// setup stream
// XXX: odd hack needed for flashIDE.
var conn = evtObj.connection;
var x = new Stream(conn);
stream = x;
stream.play("red5StreamDemo", -1);
publish_video.attachVideo(stream);
trace(chat);
// register the NetConnection that GlobalObject will need
chat.registerConnection(conn);
// connect the shared object
chat.connectSO();
}
}
}
Je ne pense pas que var chat
soit en cours d'initialisation en tant que trace (chat)
imprime 'undefined'. Cependant, var connector
et var publish_video
semblent collecter leurs instances à partir de la scène.
Cet exemple de code inclut ces deux éléments et fonctionne correctement, mais je ne peux pas faire en sorte que mes ajouts se comportent de la même manière.
J'ai ajouté une instance de BasicChat à la scène (j'utilise Flash CS4) et j'ai passé ces dernières heures à jouer avec ses différentes propriétés, couches et groupes, mais en vain.
Quelqu'un peut-il suggérer que mon var chat
ne collecte pas son instance depuis la scène?
La solution
Avez-vous défini le nom d'instance de votre instance d'étape BasicChat? Il devrait être réglé sur "chat". Pour le définir, cliquez sur l'instance d'étape et recherchez le champ du nom de l'instance dans le panneau Propriétés (premier / champ visible en haut).