2013-05-09 2 views
0

В документации Adobe имеется сообщение об использовании общего object.send(). Я пытаюсь выполнить метод отправки для всех клиентов.Общие методы отправки объектов()

Я скопировал клиентский и серверный код из Adobe, и я не могу вызвать функцию. Это моя ошибка компиляции в выводе

Line 31 1119: Access of possibly undefined property doSomething through a reference with static type flash.net:SharedObject. 

Любые предложения, как я могу исправить это as3 новичка. Пожалуйста, кто-нибудь может мне помочь? сторона

var nc:NetConnection = new NetConnection(); 

nc.connect("rtmfp://localhost/submitSend"); 

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler); 

function netHandler(event:NetStatusEvent):void{ 
    switch(event.info.code){ 
     case "NetConnection.Connect.Sucess": 
     trace("Connecting..."); 
     break; 

     case "NetConnection.Connect.Failed": 
     trace("Unable to connect up"); 
     break; 

     case "NetConnection.Connect.Rejected": 
     trace("Whoops"); 
     break; 
    } 
} 

var so:SharedObject = SharedObject.getRemote("mySo", nc.uri, true); 

so.connect(nc); 

so.doSomething = function(str) { 
    // Process the str object. 
}; 

Сервера:

var so = SharedObject.get("mySo", true); 
so.send("doSomething", "This is a test"); 
+1

Можете ли вы предоставить ссылку на страницу, которую вы взяли этот код из? – duTr

+0

Кроме того, вы должны подключить свой общий объект только после подключения к серверу. – duTr

ответ

0

Как сказан в моем предыдущем комментарии, ссылка на документ, вы ссылаетесь на приветствовался бы, чтобы помочь людям помочь вам ...

Здесь уже есть некоторые моменты, которые следует упомянуть:

  • Перед тем как звонить в, вы должны добавить слушателей к мероприятию.
  • Вы должны подключить общий объект, как только Вы получили NetConnection.Connect.Success события (кстати, у вас есть опечатка в вашем образце на этом имени)
  • Вы должны установить вам экземпляр класса в качестве клиента вашего общего объекта.

Я не уверен, что все это будет исправить вашу проблему, но вы можете попробовать это:

var nc:NetConnection = new NetConnection(); 

private function netHandler(event:NetStatusEvent):void 
{ 
    switch(event.info.code) 
    { 
     case "NetConnection.Connect.Success": 
     { 
      trace("Connecting..."); 
      connectSharedObject(); 
      break; 
     } 
     case "NetConnection.Connect.Failed": 
     { 
      trace("Unable to connect up"); 
      break; 
     } 
     case "NetConnection.Connect.Rejected": 
     { 
      trace("Whoops"); 
      break; 
     } 
    } 
} 

private function connectSharedObject():void 
{ 
    var so:SharedObject = SharedObject.getRemote("mySo", nc.uri, true); 
    so.client = this; 
    so.connect(nc); 
} 

public function doSomething(str:String):void 
{ 
    // Process the str object. 
} 

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler); 
nc.connect("rtmfp://localhost/submitSend"); 
+0

Thank you duTr. Цените помощь и комментарии. Извините, вот ссылка http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/help.html?content=00000371.html Я проверил код и подключился к серверу просто отлично. Это может показаться глупым вопросом. Но должен ли я получать какое-либо уведомление или ответ в текущем журнале выходной или административной консоли в отношении строкового сообщения? Потому что я не уверен, что строковое сообщение, отправленное мной, было успешным или не выполнено. Спасибо – marcus

+0

Я не могу проверить прямо сейчас, но я думаю, что ваш серверный вызов 'so.send (« doSomething »,« This is a test ») ; 'должен возвращать' true', если клиентский метод был вызван, и 'false' в противном случае. – duTr

+0

Извините, что вам неприятно..Но я немного изменил свой серверный код, теперь он выглядит как это приложение .onConnect = function (client) {trace («In onConnect»); application.acceptConnection (клиент); so = sharedObject.get ("foo", true); so.send («doSomething», «это тест»); Не похоже, что сервер вызывает sharedobject.send(), поэтому метод не был вызван подключающимся клиентам. На стороне клиента я добавил обработчик onSync, чтобы попытаться подключиться к общему объекту, чтобы вызвать so.send, но это было неудачно. Когда-нибудь я найду способ! Его не ракетостроение lol – marcus

Смежные вопросы