Paket | flash.net |
Sınıf | public class NetGroup |
Miras Alma | NetGroup EventDispatcher Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
-
Servis Kalitesini İzleme.
info
özelliği, özellikleri bu grup için QoS istatistikleri sağlayan bir NetGroupInfo nesnesi içerir. -
Gönderme. Bir grubun tüm üyelerine ActionScript mesajları yayınlamak için
post()
öğesini çağırın. -
Doğrudan yönlendirme. Eşler arası bir grubun belirli bir üyesine kısa bir veri mesajı göndermek için
sendToNearest()
,sendToNeighbor()
vesendToAllNeighbors()
öğelerini çağırın. Kaynak ve hedefin doğrudan bağlantılı olması gerekmez. -
Nesne çoğaltma. Büyük verileri parçalara bölmek ve onları eşler arası bir grupta tüm düğümlere çoğaltmak için
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
vedenyRequestedObject()
öğelerini çağırın.
NetConnection, istemci tarafındaki NetGroup sınıfında aşağıdaki olayları dağıtır:
- NetGroup.Connect.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
Event nesnesinin info.group
özelliği, olay kaynağına bir başvuru içerir (NetGroup). NetGroup tüm diğer olayları dağıtır. Sunucu tarafındaki NetGroup sınıfında, NetGroup tüm olayları dağıtır.
Grupları eş yardımlı ağ ile kullanma hakkında bilgi için yine Tom Krcha tarafından yazılan Social Media Experiences with Flash Media and RTMFP (Flash Media ve RTMFP ile Sosyal Medya Deneyimleri) makalesine bakın.
Eş yardımlı ağ konusunun teknik ayrıntıları hakkında bilgi için Adobe Bilgisayar Uzmanı Matthew Kaufman tarafından yazılan P2P on the Flash Platform with RTMFP (Flash Platformu2nda RTMFP ile P2P) makalesine bakın.
İlgili API Öğeleri
flash.net.NetStream
"NetGroup" ile başlayan flash.events.NetStatusEvent info.code değerleri.
Özellik | Tanımlayan: | ||
---|---|---|---|
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
estimatedMemberCount : Number [salt okunur]
Grubun tahmin edilen üye sayısını yerel komşuluk yoğunluğunu temel alarak ve grup adreslerinin eşit şekilde dağıldığını varsayarak belirtir. | NetGroup | ||
info : NetGroupInfo [salt okunur]
Özellikleri, NetGroup öğesinin RTMFP eşler arası veri taşımasıyla ilgili Hizmet Kalitesi istatistiklerini sağlayan bir NetGroupInfo nesnesini döndürür. | NetGroup | ||
localCoverageFrom : String [salt okunur]
Bu düğümün "en yakın" ve sorumlu olduğu grup adresleri aralığının başlangıcını belirtir. | NetGroup | ||
localCoverageTo : String [salt okunur]
Bu düğümün "en yakın" ve sorumlu olduğu grup adresleri aralığının bitişini belirtir. | NetGroup | ||
neighborCount : Number [salt okunur]
Bu düğümün doğrudan bağlı olduğu grup üyelerinin sayısını belirtir. | NetGroup | ||
receiveMode : String
NetGroupReceiveMode numaralandırma sınıfındaki değerlerden biri olarak bu düğümün yönlendirme alma modunu belirtir. | NetGroup | ||
replicationStrategy : String
Nesne çoğaltma getirme stratejisini belirtir. | NetGroup |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Belirtilen NetConnection nesnesi üzerinde bir NetGroup oluşturur ve bunu groupspec tarafından belirtilen gruba katar. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
EventDispatcher nesnesi olan bir olay dinleyici nesnesini, dinleyicinin bir olayın bildirimini alması için kaydeder. | EventDispatcher | ||
Bu düğümün, yakındaki öğelere isteklerini yerine getirdiği nesneler olarak tanıttığı nesneler kümesine, startIndex ile endIndex arasındaki (bunlar da dahil) nesneleri ekler. | NetGroup | ||
peerID öğesinin grubun bir üyesi olduğunu belirten bir kaydı elle ekler. | NetGroup | ||
Önceden bu grupta olması gereken, belirtilen bir peerID öğesine hemen doğrudan bağlanarak elle bir yakın öğe ekler. | NetGroup | ||
Alınacak nesneler kümesine startIndex ile endIndex arasındaki (bunlar da dahil) nesneleri ekler. | NetGroup | ||
Grubun bağlantısını keser ve bu NetGroup öğesini kapatır. | NetGroup | ||
Bir peerID öğesini, sendToNearest() yöntemiyle kullanıma uygun bir grup adresine dönüştürür. | NetGroup | ||
Önceden addHaveObjects() ile tanıtılan bir nesne için NetStatusEvent NetGroup.Replication.Request öğesinde alınan bir isteği reddeder. | NetGroup | ||
Olay akışına bir olay gönderir. | EventDispatcher | ||
EventDispatcher nesnesinin belirli bir olay türü için kayıtlı dinleyicisi olup olmadığını kontrol eder. | EventDispatcher | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Bir grubun tüm üyelerine bir mesaj gönderir. | NetGroup | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
EventDispatcher nesnesinden bir dinleyiciyi kaldırır. | EventDispatcher | ||
Bu düğümün, yakındaki öğelere isteklerini yerine getirdiği nesneler olarak tanıttığı nesneler kümesinden, startIndex ile endIndex arasındaki (bunlar da dahil) nesneleri kaldırır. | NetGroup | ||
Alınacak nesneler kümesinden, startIndex ile endIndex arasındaki (bunlar da dahil) nesneleri kaldırır. | NetGroup | ||
Tüm yakındaki öğelere bir mesaj gönderir. | NetGroup | ||
Belirtilen grup adresine en yakın öğeye (veya bir yerel düğüme) bir mesaj gönderir. | NetGroup | ||
sendMode parametresi tarafından belirtilen yakın öğeye bir mesaj gönderir. | NetGroup | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object | ||
Bir olay dinleyicisinin bu EventDispatcher nesnesiyle mi, yoksa onun belirtilen olay türüne yönelik üst öğelerinden biriyle mi kayıtlı olduğunu kontrol eder. | EventDispatcher | ||
Önceden addHaveObjects() yöntemiyle tanıtılan bir nesne için NetStatusEvent NetGroup.Replication.Request tarafından alınan isteği karşılar. | NetGroup |
Olay | Özet | Tanımlayan: | ||
---|---|---|---|---|
[broadcast olayı] Flash Player veya AIR uygulaması işletim sistemi odağına gelip etkin olduğunda gönderilir. | EventDispatcher | |||
[broadcast olayı] Çalışan Flash Player veya AIR uygulaması sistem odağını kaybettiğinde ve etkin olmayan duruma geldiğinde gönderilir. | EventDispatcher | |||
Bir NetGroup nesnesi durumunu veya hata koşulunu bildirirken gönderilir. | NetGroup |
estimatedMemberCount | özellik |
estimatedMemberCount:Number
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Grubun tahmin edilen üye sayısını yerel komşuluk yoğunluğunu temel alarak ve grup adreslerinin eşit şekilde dağıldığını varsayarak belirtir.
Uygulama
public function get estimatedMemberCount():Number
İlgili API Öğeleri
info | özellik |
info:NetGroupInfo
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Özellikleri, NetGroup öğesinin RTMFP eşler arası veri taşımasıyla ilgili Hizmet Kalitesi istatistiklerini sağlayan bir NetGroupInfo nesnesini döndürür.
Uygulama
public function get info():NetGroupInfo
İlgili API Öğeleri
localCoverageFrom | özellik |
localCoverageFrom:String
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bu düğümün "en yakın" ve sorumlu olduğu grup adresleri aralığının başlangıcını belirtir. Aralık, grup adresi halka modu 2256 boyunca artan yönde belirtilir.
Uygulama
public function get localCoverageFrom():String
İlgili API Öğeleri
localCoverageTo | özellik |
localCoverageTo:String
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bu düğümün "en yakın" ve sorumlu olduğu grup adresleri aralığının bitişini belirtir. Aralık, grup adresi halka modu 2256 boyunca artan yönde belirtilir.
Uygulama
public function get localCoverageTo():String
İlgili API Öğeleri
neighborCount | özellik |
receiveMode | özellik |
receiveMode:String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
NetGroupReceiveMode numaralandırma sınıfındaki değerlerden biri olarak bu düğümün yönlendirme alma modunu belirtir.
Uygulama
public function get receiveMode():String
public function set receiveMode(value:String):void
İlgili API Öğeleri
replicationStrategy | özellik |
replicationStrategy:String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Nesne çoğaltma getirme stratejisini belirtir. Değer, NetGroupReplicationStrategy sınıfındaki numaralandırılmış değerlerden biridir.
Uygulama
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
İlgili API Öğeleri
NetGroup | () | Yapıcı |
public function NetGroup(connection:NetConnection, groupspec:String)
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Belirtilen NetConnection nesnesi üzerinde bir NetGroup oluşturur ve bunu groupspec
tarafından belirtilen gruba katar.
Çoğu durumda, bir groupspec
öğesinin yerel sistemde ağ yukarı bağlantısını kullanma olasılığı vardır. Bir groupspec öğesi ile bir NetStream veya NetGroup nesnesi oluşturulduğunda, Flash Player bir Gizlilik İletişim Kutusu görüntüler. İletişim kutusu, Flash Player'ın bağlantıyı bir kullanıcının eşleriyle veri paylaşmak için kullanıp kullanamayacağını sorar. Kullanıcı "Bu etki alanına izin ver"i tıklatırsa, kullanıcı uygulamaya bir daha bağlandığında iletişim kutusu görüntülenmez. Kullanıcı eş yardımlı ağa izin vermiyorsa, grup dahilindeki tüm eş özellikleri (gönderme, yönlendirilmiş yönlendirme, nesne çoğaltma ve çoklu yayın) devre dışı olur. İzin verilirse, NetConnection öğesinin olay dinleyicisine info
nesnesinin code
özelliğinde NetGroup.Connect.Success
olacak şekilde bir NetStatusEvent öğesi gönderilir. İzin reddedilirse, code
özelliği NetGroup.Connect.Rejected
olur. NetGroup nesnesinin herhangi bir yöntemini çağırmaya çalışırsanız, bir NetGroup.Connect.Success
olayı alınıncaya kadar istisna atılır.
Not: Bir istemci yerel IP'si olan bir çoklu yayın akışına üye olduğunda, güvenlik iletişim kutusu görüntülenmez.
Parametrelerconnection:NetConnection — Bir NetConnection nesnesi.
| |
groupspec:String — Bu üyenin adını, yeteneklerini, kısıtlamalarını ve yetkilerini içerecek şekilde, katılacağı RTMFP eşler arası grubunu belirten bir dize.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Atar
ArgumentError — NetConnection örneği bağlanmaz.
| |
Error — groupspec geçersizdir.
|
İlgili API Öğeleri
addHaveObjects | () | yöntem |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bu düğümün, yakındaki öğelere isteklerini yerine getirdiği nesneler olarak tanıttığı nesneler kümesine, startIndex
ile endIndex
arasındaki (bunlar da dahil) nesneleri ekler. Varsayılan olarak Sahip Olunanlar kümesi boştur. Dizinler 0 ile 9007199254740992 arasında tam sayılar olmalıdır.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
Bu yöntem, info
nesnesinin code
özelliğinde NetGroup.Replication.Request
olacak şekilde, NetGroup'un olay dinleyicisine bir NetStatusEvent öğesi gönderir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
startIndex:Number — Sahip Olunanlar kümesine eklenecek nesne dizinleri aralığının başlangıcı.
| |
endIndex:Number — Sahip Olunanlar kümesine eklenecek nesne dizinleri aralığının bitişi.
|
Atar
RangeError — Bu yönteme iletilen sayı, 0'da küçük veya 9007199254740992'den büyüktür.
|
İlgili API Öğeleri
addMemberHint | () | yöntem |
public function addMemberHint(peerID:String):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
peerID
öğesinin grubun bir üyesi olduğunu belirten bir kaydı elle ekler. Yalnızca topoloji için gerekiyorsa bununla hemen bağlantı denenir.
Parametreler
peerID:String — Olası yakın öğeler kümesine eklenecek peerID.
|
Boolean — Başarılı olursa TRUE, başarısız olursa FALSE.
|
İlgili API Öğeleri
addNeighbor | () | yöntem |
public function addNeighbor(peerID:String):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Önceden bu grupta olması gereken, belirtilen bir peerID
öğesine hemen doğrudan bağlanarak elle bir yakın öğe ekler. Bu doğrudan bağlantı daha sonra topoloji için gerekli olmazsa düşebilir.
Parametreler
peerID:String — Hemen bağlanılacak peerID.
|
Boolean — Başarılı olursa TRUE, başarısız olursa FALSE.
|
İlgili API Öğeleri
addWantObjects | () | yöntem |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Alınacak nesneler kümesine startIndex
ile endIndex
arasındaki (bunlar da dahil) nesneleri ekler. Dizinler 0 ile 9007199254740992 arasında tam sayılar olmalıdır. Varsayılan olarak İstenenler kümesi boştur.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
Bu yöntem bir NetStatusEvent öğesini info.code
özelliğindeki NetGroup.Replication.Fetch.SendNotify
ile Netgroup öğesinin olay dinleyicisine gönderir. Bu olaydan sonra bir NetGroup.Replication.Fetch.Failed
veya NetGroup.Replication.Fetch.Result
olayı gelir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
startIndex:Number — İstenenler kümesine eklenecek nesne dizinleri aralığının başlangıcı.
| |
endIndex:Number — İstenenler kümesine eklenecek nesne dizinleri aralığının bitişi.
|
Atar
RangeError — Bu yönteme iletilen sayı, 0'da küçük veya 9007199254740992'den büyüktür.
|
İlgili API Öğeleri
close | () | yöntem |
public function close():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Grubun bağlantısını keser ve bu NetGroup öğesini kapatır. Bu yöntem çağrıldıktan sonra bu NetGroup kullanılamaz.
convertPeerIDToGroupAddress | () | yöntem |
public function convertPeerIDToGroupAddress(peerID:String):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bir peerID öğesini, sendToNearest()
yöntemiyle kullanıma uygun bir grup adresine dönüştürür.
Parametreler
peerID:String — Dönüştürülecek peerID.
|
String — peerID için grup adresi.
|
İlgili API Öğeleri
denyRequestedObject | () | yöntem |
public function denyRequestedObject(requestID:int):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Önceden addHaveObjects()
ile tanıtılan bir nesne için NetStatusEvent NetGroup.Replication.Request
öğesinde alınan bir isteği reddeder. İstekte bulunan, Sahip Olunanlar kümesinden alınmadığı sürece veya alınana kadar bu nesneyi isteyebilir.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
requestID:int — NetGroup.Replication.Request olayında verildiği haliyle istek kimliği.
|
İlgili API Öğeleri
post | () | yöntem |
public function post(message:Object):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bir grubun tüm üyelerine bir mesaj gönderir. Bu yöntemin çağırılması için, GroupSpecifier.postingEnabled
özelliği NetGroup yapıcısına iletilen groupspec'te true
olmalıdır. Daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruba mesaj gönderme" konusuna bakın.
Tüm mesajlar benzersiz olmalıdır. Önceden gönderilenle aynı olan bir mesaj yayılmayabilir. Mesajları benzersiz hale getirmek için bir sıra numarası kullanın.
Mesaj teslimatı sıraya alınmamış. Mesaj teslimatı garantilenmemiş.
Mesajlar AMF'de serileştirilir. Mesajın türü aşağıdakilerden biri olabilir: bir Object, bir int, bir Number veya bir String. Mesaj bir MovieClip olamaz.
Bu yöntem bir NetStatusEvent öğesini info.code
özelliğindeki "NetGroup.Posting.Notify"
ile Netgroup öğesinin olay dinleyicisine gönderir. NetGroup.Posting.Notify
olayı hem istemci hem de sunucuda NetGroup öğesine gönderilir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
message:Object — Grubun diğer tüm üyelerine gönderilecek mesaj.
|
String — Gönderilmişse mesajın messageID öğesi veya hata durumunda null . messageID, mesajın serileştirme ham baytlarının SHA256 değerinin onaltılı halidir.
|
İlgili API Öğeleri
Örnek ( Bu örnek nasıl kullanılır? )
Uygulamayı çalıştırdığınızda, girdi metni alanına herhangi bir grup adını girebilirsiniz. GroupSpecifier sınıfı grubun devamlı benzersiz adı olan bir dize oluşturmak için bu adı (ayarladığınız herhangi bir GroupSpecifier özelliğinin yanı sıra) kullanır. Gruba başka bir istemci bağlamak için, o istemci aynı grup adını kullanmalıdır. Örneğin, A istemcisi "firstmesh" grup adını kullanırsa, A istemcisiyle iletişim kurmak isteyen diğer istemciler de "firstmesh" grup adını kullanmalıdır. İstemci B "kite" grup adını kullanırsa, başarıyla bağlanır ancak yeni bir grup oluşur ve istemci A ile veya "firstmesh" grubundaki herhangi biriyle iletişim kuramaz.
Bu örneği çalıştırmak için, Flash Pro'da Kütüphane'ye bir Button, bir Label, bir TextInput ve bir TextArea bileşeni ekleyin.
package { import flash.display.Sprite; import flash.events.TextEvent; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import fl.events.ComponentEvent; import fl.controls.Label; import fl.controls.Button; import fl.controls.TextInput; import fl.controls.TextArea; import flash.text.TextFieldAutoSize; import flash.net.*; public class NetGroupPostExample extends Sprite{ private var connectButton:Button; private var disconnectButton:Button; private var groupNameText:TextInput; private var userNameText:TextInput; private var chatText:TextInput; private var statusLog:TextArea; private var groupLabel:Label; private var userLabel:Label; private var netConnection:NetConnection = null; private var netGroup:NetGroup = null; private var sequenceNumber:uint = 0; private var connected:Boolean = false; private var joinedGroup:Boolean = false; private const SERVER:String = "rtmfp://fms.example.com/someapp"; public function NetGroupPostExample() { DoUI(); } // Writes messages to the TextArea. private function StatusMessage(msg:Object):void{ statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } // Handles all NetStatusEvents for the NetConnection and the NetGroup. // This code includes cases it doesn't handle so you can see the cases // and their info objects for learning purposes. private function NetStatusHandler(e:NetStatusEvent):void{ StatusMessage(e.info.code + "\n"); switch(e.info.code){ case "NetConnection.Connect.Success": connectButton.enabled = false; disconnectButton.enabled = true; OnConnect(); break; case "NetConnection.Connect.Closed": OnDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } // Creates a NetConnection to Flash Media Server if the app isn't already connected // and if there's a group name in the TextInput field. private function DoConnect(e:MouseEvent):void{ if(!connected && (groupNameText.length > 0)){ StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); // To connect to Flash Media Server, pass the server name. netConnection.connect(SERVER); } else { StatusMessage("Enter a group name"); } } // Called in the "NetConnection.Connect.Success" case in the NetStatusEvent handler. private function OnConnect():void{ StatusMessage("Connected\n"); connected = true; // Create a GroupSpecifier object to pass to the NetGroup constructor. // The GroupSpecifier determines the properties of the group var groupSpecifier:GroupSpecifier; groupSpecifier = new GroupSpecifier("aslrexample/" + groupNameText.text); groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetGroupConnect():void{ joinedGroup = true; } private function DoDisconnect(e:MouseEvent):void{ if(netConnection){ netConnection.close(); } } private function OnDisconnect():void{ StatusMessage("Disconnected\n"); netConnection = null; netGroup = null; connected = false; joinedGroup = false; connectButton.enabled = true; disconnectButton.enabled = false; } private function ClearChatText():void{ chatText.text = ""; } // Called when you the chatText field has focus and you press Enter. private function DoPost(e:ComponentEvent):void{ if(joinedGroup){ var message:Object = new Object; message.user = userNameText.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); } else { StatusMessage("Click Connect before sending a chat message"); } ClearChatText(); } private function OnPosting(message:Object):void{ StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoUI():void { groupLabel = new Label(); groupLabel.move(20, 10); groupLabel.autoSize = TextFieldAutoSize.LEFT groupLabel.text = "Group name:" addChild(groupLabel); groupNameText = new TextInput(); groupNameText.move(90, 10); groupNameText.text = "channel" + (int(Math.random() * 899) + 101); addChild(groupNameText); connectButton = new Button(); connectButton.addEventListener(MouseEvent.CLICK, DoConnect); connectButton.move(205, 10); connectButton.label = "Connect"; addChild(connectButton); disconnectButton = new Button(); disconnectButton.addEventListener(MouseEvent.CLICK, DoDisconnect); disconnectButton.move(310, 10); disconnectButton.label = "Disconnect"; disconnectButton.enabled = false; addChild(disconnectButton); statusLog = new TextArea(); statusLog.move(30, 38); statusLog.width = 360; statusLog.height = 215; statusLog.editable = false; addChild(statusLog); userLabel = new Label(); userLabel.move(20, 270); userLabel.autoSize = TextFieldAutoSize.LEFT userLabel.text = "User name:" addChild(userLabel); userNameText = new TextInput(); userNameText.move(80, 270); userNameText.text = "user " + int(Math.random() * 65536); addChild(userNameText); chatText = new TextInput(); chatText.addEventListener(ComponentEvent.ENTER, DoPost); chatText.move(185, 270); chatText.maxChars = 255; chatText.width = 215; addChild(chatText); } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} } }
removeHaveObjects | () | yöntem |
public function removeHaveObjects(startIndex:Number, endIndex:Number):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Bu düğümün, yakındaki öğelere isteklerini yerine getirdiği nesneler olarak tanıttığı nesneler kümesinden, startIndex
ile endIndex
arasındaki (bunlar da dahil) nesneleri kaldırır. Dizinler 0 ile 9007199254740992 arasında tam sayılar olmalıdır.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
startIndex:Number — Sahip Olunanlar kümesinden kaldırılacak nesne dizinleri aralığının başlangıcı.
| |
endIndex:Number — Sahip Olunanlar kümesinden kaldırılacak nesne dizinleri aralığının bitişi.
|
Atar
RangeError — Bu yönteme iletilen sayı, 0'da küçük veya 9007199254740992'den büyüktür.
|
İlgili API Öğeleri
removeWantObjects | () | yöntem |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Alınacak nesneler kümesinden, startIndex
ile endIndex
arasındaki (bunlar da dahil) nesneleri kaldırır. Dizinler 0 ile 9007199254740992 arasında tam sayılar olmalıdır.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
startIndex:Number — İstenenler kümesinden kaldırılacak nesne dizinleri aralığının başlangıcı.
| |
endIndex:Number — İstenenler kümesinden kaldırılacak nesne dizinleri aralığının bitişi.
|
Atar
RangeError — Bu yönteme iletilen sayı, 0'da küçük veya 9007199254740992'den büyüktür.
|
İlgili API Öğeleri
sendToAllNeighbors | () | yöntem |
public function sendToAllNeighbors(message:Object):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Tüm yakındaki öğelere bir mesaj gönderir. En az bir yakın öğe seçilirse, NetGroupSendResult.SENT
öğesini döndürür.
Mesajları yönlendirme hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Mesajları doğrudan bir eşe yönlendirme" konusuna bakın.
Bir düğüm bir mesaj aldığında, info
nesnesinin code
özelliğinde NetGroup.SendTo.Notify
olacak şekilde NetGroup'un olay dinleyicisine bir NetStatusEvent öğesi gönderilir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
message:Object — Gönderilecek mesaj.
|
String — NetGroupSendResult numaralandırma sınıfının, gönderme işleminin başarılı veya başarısız olduğunu belirtilen bir özelliği.
|
İlgili API Öğeleri
sendToNearest | () | yöntem |
public function sendToNearest(message:Object, groupAddress:String):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Belirtilen grup adresine en yakın öğeye (veya bir yerel düğüme) bir mesaj gönderir. Halkanın tamamındaki yakın öğeleri dikkate alır. Mesaj hedefine başarıyla gönderildiyse, NetGroupSendResult.SENT
öğesini döndürür.
Mesajları yönlendirme hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Mesajları doğrudan bir eşe yönlendirme" konusuna bakın.
Bir düğüm bir mesaj aldığında, info
nesnesinin code
özelliğinde NetGroup.SendTo.Notify
olacak şekilde NetGroup'un olay dinleyicisine bir NetStatusEvent öğesi gönderilir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
message:Object — Gönderilecek mesaj.
| |
groupAddress:String — Mesajın yönlendirileceği grup adresi.
|
String — NetGroupSendResult numaralandırma sınıfının, gönderme işleminin başarılı veya başarısız olduğunu belirtilen bir özelliği.
|
İlgili API Öğeleri
sendToNeighbor | () | yöntem |
public function sendToNeighbor(message:Object, sendMode:String):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
sendMode
parametresi tarafından belirtilen yakın öğeye bir mesaj gönderir. Mesaj istenen hedefe başarıyla gönderildiyse, NetGroupSendResult.SENT
öğesini döndürür.
Mesajları yönlendirme hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Mesajları doğrudan bir eşe yönlendirme" konusuna bakın.
Bir düğüm bir mesaj aldığında, info
nesnesinin code
özelliğinde NetGroup.SendTo.Notify
olacak şekilde NetGroup'un olay dinleyicisine bir NetStatusEvent öğesi gönderilir.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
message:Object — Gönderilecek mesaj.
| |
sendMode:String — NetGroupSendMode numaralandırma sınıfının, mesajın gönderileceği yakın öğeyi belirten bir özelliği.
|
String — NetGroupSendResult numaralandırma sınıfının, gönderme işleminin başarılı veya başarısız olduğunu belirtilen bir özelliği.
|
İlgili API Öğeleri
writeRequestedObject | () | yöntem |
public function writeRequestedObject(requestID:int, object:Object):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.1, AIR 2 |
Önceden addHaveObjects()
yöntemiyle tanıtılan bir nesne için NetStatusEvent NetGroup.Replication.Request
tarafından alınan isteği karşılar. Nesne
aşağıdakilerden biri olabilir: bir Object, bir int, bir Number veya bir String. Nesne
bir MovieClip olamaz.
Nesne çoğaltma hakkında daha fazla bilgi için, Flash Media Server Geliştirici Kılavuzu'ndaki "Bir gruptaki nesneyi çoğaltma" konusuna bakın.
NOT: Bu yöntemi çağırmadan önce NetGroup.Neighbor.Connect
olayını test edin.
Parametreler
requestID:int — NetGroup.Replication.Request olayında verildiği haliyle istek kimliği.
| |
object:Object — NetGroup.Replication.Request olayında verilen dizine karşılık gelen nesne.
|
İlgili API Öğeleri
netStatus | Olay |
flash.events.NetStatusEvent
özellik NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 10.1 |
Bir NetGroup nesnesi durumunu veya hata koşulunu bildirirken gönderilir. netStatus
olayı bir info
özelliği içerir. info
özelliği, bir bağlantı denemesinin başarılı olup olmaması gibi olay hakkında bilgiler içeren bir nesnedir.
netStatus
olay nesnesinin type
özelliği değerini tanımlar.
Bu olay şu özelliklere sahiptir:
Özellik | Değer |
---|---|
bubbles | false |
cancelable | false ; iptal edilecek varsayılan davranış yoktur. |
currentTarget | Bu Event nesnesini olay dinleyicisiyle etkin olarak işleyen nesne. |
info | Nesnenin durumunu veya hata koşulunu açıklayan özellikleri olan bir nesne. |
target | Durumunu bildiren NetConnection veya NetStream nesnesi. |
İlgili API Öğeleri
Uygulamayı çalıştırdığınızda, girdi metni alanına herhangi bir grup adını girebilirsiniz. GroupSpecifier sınıfı grubun devamlı benzersiz adı olan bir dize oluşturmak için bu adı (ayarladığınız herhangi bir GroupSpecifier özelliğinin yanı sıra) kullanır. Gruba başka bir istemci bağlamak için, o istemci aynı grup adını kullanmalıdır. Örneğin, A istemcisi "firstmesh" grup adını kullanırsa, A istemcisiyle iletişim kurmak isteyen diğer istemciler de "firstmesh" grup adını kullanmalıdır. İstemci B "kite" grup adını kullanırsa, başarıyla bağlanır ancak yeni bir grup oluşur ve istemci A ile veya "firstmesh" grubundaki herhangi biriyle iletişim kuramaz.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="OnApplicationComplete()"> <mx:Script> <![CDATA[ private var netConnection:NetConnection = null; private var netStream:NetStream = null; private var netGroup:NetGroup = null; private var video:Video = null; private var sequenceNumber:uint = 0; private var resizeTimer:Timer = null; private const SERVER:String = "rtmfp://fms.example.com/someapp"; [Bindable] private var connected:Boolean = false; [Bindable] private var joinedGroup:Boolean = false; private function OnApplicationComplete():void { userName.text = "user " + int(Math.random() * 65536); groupName.text = "channel" + (int(Math.random() * 899) + 101); resizeTimer = new Timer(2000.0); resizeTimer.addEventListener(TimerEvent.TIMER, DoResizeVideo); resizeTimer.start(); } private function StatusMessage(msg:Object):void { statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } private function NetStatusHandler(e:NetStatusEvent):void { StatusMessage(e.info.code); switch(e.info.code) { case "NetConnection.Connect.Success": OnConnect(); break; case "NetConnection.Connect.Closed": case "NetConnection.Connect.Failed": case "NetConnection.Connect.Rejected": case "NetConnection.Connect.AppShutdown": case "NetConnection.Connect.InvalidApp": OnDisconnect(); break; case "NetStream.Connect.Success": // e.info.stream OnNetStreamConnect(); break; case "NetStream.Connect.Rejected": // e.info.stream case "NetStream.Connect.Failed": // e.info.stream DoDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group DoDisconnect(); break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": DoResizeVideo(); break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } private function DoConnect():void { StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netConnection.connect(SERVER); } private function OnConnect():void { var groupSpecifier:GroupSpecifier; StatusMessage("Connected\n"); connected = true; groupSpecifier = new GroupSpecifier("max2009lab/" + groupName.text); groupSpecifier.multicastEnabled = true; groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations()); netStream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetStreamConnect():void { netStream.client = this; var mic:Microphone = Microphone.getMicrophone(); if(mic) { mic.codec = SoundCodec.SPEEX; mic.setSilenceLevel(0); netStream.attachAudio(mic); StatusMessage("got microphone\n"); } var camera:Camera = Camera.getCamera(); if(camera) { camera.setMode(320, 240, 10); camera.setQuality(30000, 0); camera.setKeyFrameInterval(15); videoDisplay.attachCamera(camera); videoDisplay.maintainAspectRatio = true; netStream.attachCamera(camera); StatusMessage("got camera\n"); } netStream.publish("stream"); } private function OnNetGroupConnect():void { joinedGroup = true; } private function DoDisconnect():void { if(netConnection) netConnection.close(); videoDisplay.attachCamera(null); } private function OnDisconnect():void { StatusMessage("Disconnected\n"); netConnection = null; netStream = null; netGroup = null; connected = false; joinedGroup = false; } private function ClearChatText():void { chatText.text = ""; } private function DoPost():void { var message:Object = new Object; message.user = userName.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); chatText.callLater(ClearChatText); } private function OnPosting(message:Object):void { StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoResizeVideo(ignored:* = null):void { if(video) { if( (0 == video.videoHeight) || (0 == video.videoWidth) ) { video.height = videoDisplay.height; video.width = videoDisplay.width; video.x = 0; video.y = 0; } else { var videoAspect:Number = Number(video.videoWidth) / Number(video.videoHeight); var displayAspect:Number = Number(videoDisplay.width) / Number(videoDisplay.height); var adjustFactor:Number; if(videoAspect >= displayAspect) // video is wider than display { adjustFactor = Number(video.videoWidth) / Number(videoDisplay.width); video.width = videoDisplay.width; video.height = int(Number(video.videoHeight) / adjustFactor); video.x = 0; video.y = int((videoDisplay.height - video.height) / 2); } else { adjustFactor = Number(video.videoHeight) / Number(videoDisplay.height); video.height = videoDisplay.height; video.width = int(Number(video.videoWidth) / adjustFactor); video.x = int((videoDisplay.width - video.width) / 2); video.y = 0; } } } } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} public function ValidateConnectAllowed(isConnected:Boolean, groupNameText:String):Boolean { return (!isConnected) && (groupNameText.length > 0); } ]]> </mx:Script> <mx:VBox top="10" right="10" left="10" bottom="10" verticalGap="6"> <mx:HBox width="100%"> <mx:Text text="Group:"/> <mx:TextInput id="groupName" width="100%" text="default" enabled="{!connected}"/> <mx:Button label="Connect" click="DoConnect()" enabled="{ValidateConnectAllowed(connected, groupName.text)}" /> <mx:Button label="Disconnect" click="DoDisconnect()" enabled="{connected}" /> </mx:HBox> <mx:VideoDisplay id="videoDisplay" width="320" height="240" resize="DoResizeVideo()"/> <mx:TextArea id="statusLog" width="100%" height="100%"/> <mx:HBox width="100%"> <mx:TextInput id="userName" width="160" /> <mx:TextInput id="chatText" width="100%" enabled="{joinedGroup}" enter="DoPost()"/> </mx:HBox> </mx:VBox> </mx:Application>
Tue Jun 12 2018, 01:09 PM Z