| Annihilator |
14.12.2010 12:28 |
При попытке создать NetStream получаю NetStream.Publish.BadName
Ситуация следующая: есть два класса - Conference, в котором создано соединение NetConnection
Код AS3:
public class Conference extends Sprite
{
public var nc:NetConnection;
private var rtmpURL:String = "rtmp://fibw0251.fib.com/multichat";
private var curuser:Object = new Object();
public function Conference():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(e:Event = null)
{
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, getStream);
nc.connect(rtmpURL, login_window.login.text);
}
private function getStream (e:NetStatusEvent):void
{
trace(e.info.code);
if (e.info.code == "NetConnection.Connect.Success") {
nc.removeEventListener(NetStatusEvent.NET_STATUS, getStream);
curuser.name = login_window.login.text;
login_window.visible = false;
comboset = new Comboset();
this.addChild(comboset);
comboset.userVid_0.init(curuser.name, 320, 240, nc);
comboset.userVid_0.publishStream();
}
}
}
и UserVid, в котором публикуется или аттачится NetStream
Код AS3:
public class UserVid extends Sprite
{
private var username:String = "";
public var free:Boolean = true;
private var videoIn:Video;
public var ns:NetStream;
private var nc:NetConnection;
private var cam:Camera;
private var mic:Microphone;
public function UserVid() {
}
public function init( _username:String, _vidWidth:int, _vidHeight:int, _netcon:NetConnection)
{
free = false;
fusername.text = username = _username;
nc = _netcon;
videoIn = new Video(_vidWidth, _vidHeight);
this.addChild(videoIn);
}
public function publishStream()
{
mic = Microphone.getMicrophone();
cam = Camera.getCamera();
if (cam != null) {
if(cam.muted){
cam.addEventListener(StatusEvent.STATUS, camStatusHandler);
} else {
setCam();
setMic();
ns = new NetStream(nc);
ns.attachAudio(mic);
ns.attachCamera(cam);
videoIn.attachCamera(cam);
ns.publish (("stream_" + username), "live");
}
}
}
private function camStatusHandler(e:StatusEvent)
{
trace(e.code);
if(e.code == "Camera.Unmuted"){
setCam();
setMic();
ns = new NetStream(nc);
ns.attachAudio(mic);
ns.attachCamera(cam);
videoIn.attachCamera(cam);
ns.publish("stream_" + username, "live");
}
}
private function setCam():void
{
cam.setMode (320, 240, 24);
cam.setQuality (0, 80);
}
private function setMic():void
{
mic.rate = 11;
mic.setSilenceLevel (12, 2000);
}
}
При попытке паблишить поток получаю ошибку
Цитата:
NetStatusEvent:. level=error, code=NetStream.Publish.BadName
|
при чем ругается на строчку
Если все в одном классе и создается прямо на сцене, то никаких проблем, но как только начинаю разбивать на классы, передавать туда ссылки или хотя бы даже делать видео в отдельном мувиклипе, то вылазит эта ошибка.
Помогите, пожалуйста, разобраться.
Добавлено через 26 часов 34 минуты
Переделал приложение так, чтобы все соединения и потоки создавались и хранились в пределах главного класса, а в объекты остальных классов передаю ссылки. Так работает.
|