Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическое создание объектов (http://www.flasher.ru/forum/showthread.php?t=193738)

fanilx 31.01.2013 19:16

Динамическое создание объектов
 
Приветствую всех!

Подскажите как динамически создать 30 объектов в цикле и добавить их на сцену? Раньше в 2.0 я делал это через eval(). Но в 3.0 не все так просто. Есть рабочий кусок кода который создает один мувик в который с FMS идет потоковое видео. Мне нужно на экран отобразить 30 разных видео потоков. И соответвенно потом знать как обращаться к каждому мувику..

Код AS3:

nsPlayer = new NetStream(nc);
                        nsPlayer.play(flashVars.Str_name);
                        vidPlayer = new Video(maxWidth, maxHeight);
                        vidPlayer.x = vidPlayer.y = 0;
                        vidPlayer.width = maxWidth;
                        vidPlayer.height = maxHeight;
 
                        vidPlayer.attachNetStream(nsPlayer);
                        PlaybackVideo = new MovieClip()
                        PlaybackVideo.x = startBigX;
                        PlaybackVideo.y = startBigY
                        PlaybackVideo.addEventListener(MouseEvent.CLICK, switchMode);
                        PlaybackVideo.addChild(vidPlayer);
                        addChild(PlaybackVideo);


strangedk 31.01.2013 19:33

Как-то
Код AS3:

var videos:Array = []; /* of Video */
var quantity:int = 30;
 
nsPlayer = new NetStream(nc);
 
for (var i:int=0; i<quantity; ++i) {
  var temp:Video = new Video(maxWidth, maxHeight);
      temp.x = 0;
      temp.y = maxHeight * i;
      temp.attachNetStream(nsPlayer);
      temp.addEventListener(MouseEvent.CLICK, switchNode);
  videos.push(temp);
  addChild(temp);
}
 
nsPlayer.play(flashVars.Str_name);

Дальше к видео можно обращаться так:

Код AS3:

Video(videos[i]).x = 10;
Video(videos[i]).y = 10;


fanilx 31.01.2013 19:38

Точно! Спасибо. в массиве ссылка на объект..

Wolsh 31.01.2013 20:43

Вопрос вроде звучал как
Цитата:

отобразить 30 разных видео потоков.

strangedk 31.01.2013 20:46

Пропустил, невнимательно читал. Но автору видимо достаточно добавления массива :D

alatar 31.01.2013 20:48

Цитата:

отобразить 30 разных видео потоков.
Сомневаюсь что это возможно на обычном десктопе (о ноутбуках, нетбуках и прочем вообще умолчим), безотносительно к flash.

strangedk 31.01.2013 21:27

Мы в одном чате делали много потоков сразу, да, тормозило прилично. Но можно делать хитрости в виде обновления видео только при наведении мыши. Или обновлять по таймеру.

Сразу 30 конечно не имеет смысла.

fanilx 03.02.2013 22:20

С логикой потоков у меня нет проблем. 30 потоков отображаются без тормозов. Разрешение и фпс маленькие + обновление по событиям.

В рамках темы появился еще один вопрос:
Сначала хотел делать комнату для конференции заранее определенную на 30 мест для каждого пользователя, но вспомнил про возможность использования общих объектов SharedObjects. При появлении нового пользователя добавлять всем клиентам его видео..
Делаю так:
Код AS3:

        nc = new NetConnection();
        nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
        nc.connect(flashVars.server);
....
private function onNetStatus(event:NetStatusEvent):void{
        // к серверу конектиться удачно видео приходит..
        so = SharedObject.getRemote("ballPosition", nc.uri, true);
        // вопрос: как то надо заводить этот объект на стороне сервера?
        //потому как на сервере нет никаких объектов.. что делаю не так?
        trace(so.connect(nc)); // undefined?
        so.addEventListener(SyncEvent.SYNC, syncHandler);
        so.setProperty("x", Math.random());
}
private function syncHandler(event:SyncEvent):void {
        trace(so.data.x) // тишина сответственно
}

что делаю не так?


Часовой пояс GMT +4, время: 07:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.