Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2011, 04:14
chiffa вне форума Посмотреть профиль Отправить личное сообщение для chiffa Найти все сообщения от chiffa
  № 1  
Ответить с цитированием
chiffa

Регистрация: Jul 2005
Сообщений: 57
По умолчанию Несколько вопросов по работе с камерой

Добрый день всем. В связи с необходимость пришлось осваивать AS лошадиными скачками. Пишу на PHP, Delphi, Java-Script, немного С#. Больше всего ActionScript по своей структуре напоминает Java-Script (со смесью С-подобных), ну это лирическое отступление. Задача стоит получить видео и аудио с веб-камеры и передать его на сервер, допустим на FMS. По сути рабочие пример в сети есть, но хочется разобрать самому. Нашел на сайте Адобе такое:


Код AS3:
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.media.Camera;
    import flash.media.Video;
    public class CameraExample extends Sprite {
        private var video:Video;
 
        public function CameraExample() {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
 
            var camera:Camera = Camera.getCamera();
 
            if (camera != null) {
                camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                video = new Video(camera.width * 2, camera.height * 2);
                video.attachCamera(camera);
                addChild(video);
            } else {
                trace("You need a camera.");
            }
        }
 
        private function activityHandler(event:ActivityEvent):void {
            trace("activityHandler: " + event);
        }
    }
}


Все работает на ура и даже выводит картинку, но возникло несколько вопросов:
1. Как улучшить качество отображаемой картинки (в том же скайпе качество картинки лучше);
2. Могу ли я как то вывести изображение не на центральную рабочию область, а на какой то созданный объект (а-ля трансляция на Panel в Delphi)
3. В основной fla файл подключаю camera.as (в свойствах документа - class) с выше описанным кодом, при запуски мувика проигрывание начинается сразу же: а как сделать что бы изображение появлялось только после нажатия на кнопку?...

Не сочтите за наглость вышеописанные вопросы... Буду признателен за помощь!

Старый 17.12.2011, 09:57
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 2  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
AS от js отличается более строгой типизацией.
1) http://help.adobe.com/ru_RU/FlashPla...ia/Camera.html
я бы попробовал методы setMode и setQuality у камеры
2) объект Video это просто отображаемый объект. Вы можете его положить в любой DisplayObjectContainer - Sprite, MovieClip. Можете произвольно задавать его размеры width, height и координаты x, y
3) Посмотрите в сети пример кнопки. Вобщих чертах так: добавляете слушателя нажатия на кнопкуб в качестве обработчика указываете ссылку на метод или функцию, в обработчике выполняете код
Код AS3:
var camera:Camera = Camera.getCamera();
 
            if (camera != null) {
                camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                video = new Video(camera.width * 2, camera.height * 2);
                video.attachCamera(camera);
                addChild(video);
            } else {
                trace("You need a camera.");
            }

Старый 18.12.2011, 03:15
chiffa вне форума Посмотреть профиль Отправить личное сообщение для chiffa Найти все сообщения от chiffa
  № 3  
Ответить с цитированием
chiffa

Регистрация: Jul 2005
Сообщений: 57
Благодарю за ответ, но как сделать что бы при старке мувика не начинал выполнятся скрипт?

Старый 18.12.2011, 08:20
thirst вне форума Посмотреть профиль Отправить личное сообщение для thirst Найти все сообщения от thirst
  № 4  
Ответить с цитированием
thirst

Регистрация: Aug 2011
Сообщений: 19
что бы при старте? Наложить на него событие, при котором выполнялся бы твой код (например, нажать на сцену):
Код AS3:
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.media.Camera;
    import flash.media.Video;
    public class CameraExample extends Sprite {
        private var video:Video;
        private var camera:Camera;
 
        public function CameraExample() {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
 
           camera = Camera.getCamera();
 
            if (camera != null) {
                stage.addEventListener(MouseEvent.CLICK, startScript);
            } else {
                trace("You need a camera.");
            }
        }
        private function startScript(e:MouseEvent):void{
            stage.removeEventListener(MouseEvent.CLICK, startScript);
            camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
            video = new Video(camera.width * 2, camera.height * 2);
            video.attachCamera(camera);
            addChild(video);
        }
        private function activityHandler(event:ActivityEvent):void {
            trace("activityHandler: " + event);
        }
    }
}

Старый 18.12.2011, 13:20
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 5  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от chiffa Посмотреть сообщение
Больше всего ActionScript по своей структуре напоминает Java-Script (со смесью С-подобных), ну это лирическое отступление.
Цитата:
Сообщение от kackbip Посмотреть сообщение
AS от js отличается более строгой типизацией.
AS2 похож на JS. AS3 похож не более, чем на другие языки с GC.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 18.12.2011, 14:52
chiffa вне форума Посмотреть профиль Отправить личное сообщение для chiffa Найти все сообщения от chiffa
  № 6  
Ответить с цитированием
chiffa

Регистрация: Jul 2005
Сообщений: 57
thirst, пытаюсь при клике на кнопку... выдает: Packages cannot be nested.

Старый 18.12.2011, 15:50
thirst вне форума Посмотреть профиль Отправить личное сообщение для thirst Найти все сообщения от thirst
  № 7  
Ответить с цитированием
thirst

Регистрация: Aug 2011
Сообщений: 19
Цитата:
Сообщение от chiffa Посмотреть сообщение
thirst, пытаюсь при клике на кнопку... выдает: Packages cannot be nested.
Дело в том, что я не тестировал этот код, т.к. у меня нет камеры.
Но может быть дело в структуре класса? Должно быть так:
Код AS3:
Package пакет{
 
        import какого-нибудь класса;
 
        class класс{
              function класс(){        //конструктор
                   //...
              }
              //...
        }
}
Ну или попробуй вместо stage.addEventListener(MouseEvent.CLICK, startScript); и stage.removeEventListener(MouseEvent.CLICK, startScript);, написать this.addEventListener(MouseEvent.CLICK, startScript); и this.removeEventListener(MouseEvent.CLICK, startScript);

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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