Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78

Загрузка видеофайла в окно флэша - с сохранением пропорций

08.09.2017, 12:11. Показов 729. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане.
Помогите решить вопрос.

У меня есть флэшфайл fla, загружающий видео по названию файла в той же папке, что и документ флэш.
Но загружает он его таких размерах, какие заложены в видеофайле (без связи с размерами окна флэша).

Подскажите - как заставить загружаемое видео - подгоняться при проигрывании под размер окна с сохранением пропорций ?

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var MyVideo:Video = new Video();
addChild(MyVideo);
 
var MyNC:NetConnection = new NetConnection();
MyNC.connect(null);
 
var MyNS:NetStream = new NetStream(MyNC);
MyNS.play("1.mp4");
 
MyVideo.attachNetStream(MyNS);
 
//the clouds.flv video has metadata we're not using, so create
//an error handler to ignore the message generated by the runtime
//about the metadata
MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
 
function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
   //ignore metadata error message
Вложения
Тип файла: rar пример.rar (6.3 Кб, 3 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2017, 12:11
Ответы с готовыми решениями:

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

Масштабирование с сохранением пропорций
Господа, можно ли добиться такогоже эффекта но без использование JS, на чистом CSS https://habr.com/post/187406/

Изменение формы с сохранением пропорций
Сам вопрос собственно в заголовке темы.

10
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
08.09.2017, 19:15
OlegSmirnov, пример скопирован с официальной документации
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var video:Video = new Video();
addChild(video);
 
var nc:NetConnection = new NetConnection();
nc.connect(null);
 
var ns:NetStream = new NetStream(nc);
ns.client = {};
ns.client.onMetaData = ns_onMetaData;
ns.client.onCuePoint = ns_onCuePoint;
 
video.attachNetStream(ns);
ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
 
 
function ns_onMetaData(item:Object):void {
    trace("metaData");
    // Resize video instance.
    video.width = item.width;
    video.height = item.height;
    // Center video instance on Stage.
    video.x = (stage.stageWidth - video.width) / 2;
    video.y = (stage.stageHeight - video.height) / 2;
}
 
function ns_onCuePoint(item:Object):void {
    trace("cuePoint");
    trace(item.name + "\t" + item.time);
}
Получив как в примере размеры высоты и ширины вы можете управлять ими по своему усмотрению, в т.ч. изменять, сохраняя пропорции.
0
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78
08.09.2017, 20:19  [ТС]
TanaTiX , в вашем примере - размеры проигрываемого файла - не подгоняются под размер окна.
Видео просто центрируется по центру - и на изменение размеров окна - вообще никак не реагирует.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.09.2017, 22:39
OlegSmirnov, так это не мой пример. Самое важное - вы получаете размер видео, следовательно знаете пропорции. Зная пропорции, задача становится чисто математической. Определите соотношение сторон цели и подберите размер согласно стороне с наименьшей пропорцией.
0
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78
10.09.2017, 14:17  [ТС]
TanaTiX , о пропорциях чего именно вы говорите?
Окно, в котором видео проигрывается - может быть любого размера - ведь его можно растягивать как угодно в ширину и высоту.

В вашем примере - видео не растягивается по размеру окна, вслед за изменением этого окна.
Размер видео здесь - остается неизменным.

Я же спрашивал - как заставить загружаемое видео - подгоняться при проигрывании под размер окна с сохранением пропорций.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.09.2017, 20:51
OlegSmirnov, думал проблема в том, что бы получить значения высоты и ширины загружаемого видео.
Когда-то в своих проектах использовал 2 метода, попробуйте:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
        private function calculateFitRectangle(currentWidth:Number, currentHeight:Number, targetWidth:Number, targetHeight:Number):Rectangle {
            var koefW:Number =  targetWidth / currentWidth;
            var koefH:Number =  targetHeight / currentHeight;           
            var w:Number;
            var h:Number;
            var x:Number;
            var y:Number;
            if (koefH < 1 || koefW < 1) {
                if (koefW < koefH) {
                    w = currentWidth * koefW;
                    h = currentHeight * koefW;
                }else {
                    w = currentWidth * koefH;
                    h = currentHeight * koefH;
                }
            }else {
                w = currentWidth;
                h = currentHeight;
            }
            if (w < targetWidth) {
                x = 0.5 * (targetWidth - w);
            }else {
                x = 0;
            }
            if (h < targetHeight) {
                y = 0.5 * (targetHeight - h);
            }else {
                y = 0;
            }
            return new Rectangle(x, y, w, h);
        }
        
        private function calculateFitRectangleMaxSize(currentWidth:Number, currentHeight:Number, targetWidth:Number, targetHeight:Number):Rectangle {
            var koefW:Number =  targetWidth / currentWidth;
            var koefH:Number =  targetHeight / currentHeight;
            var w:Number;
            var h:Number;
            var x:Number;
            var y:Number;
            if (koefH < 1 || koefW < 1) {
                if (koefW < koefH) {
                    w = currentWidth * koefW;
                    h = currentHeight * koefW;
                }else {
                    w = currentWidth * koefH;
                    h = currentHeight * koefH;
                }
            }else {
                if (koefW < koefH) {
                    w = targetWidth;
                    h = currentHeight * w / currentWidth;
                }else {
                    h = targetHeight;
                    w = currentWidth * h / currentHeight;
                }
            }
            if (w < targetWidth) {
                x = 0.5 * (targetWidth - w);
            }else {
                x = 0;
            }
            if (h < targetHeight) {
                y = 0.5 * (targetHeight - h);
            }else {
                y = 0;
            }
            return new Rectangle(x, y, w, h);
        }
0
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78
11.09.2017, 01:19  [ТС]
TanaTiX , а вот этот последний код - куда добавлять ?

(Там нет ссылки на видеофайл как в предыдущем кода)
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
11.09.2017, 11:31
Этот код определяет, исходя из текущих размеров и целевых, координаты и размеры вставляемой области (посредством экземпляра класса Rectangle). Вставлять в класс.

Добавлено через 55 секунд
Сейчас нет возможности приподнести на блюдечке готовое решение, могу только словами направить.
0
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78
13.09.2017, 19:52  [ТС]
TanaTiX , а класс Rectangle - он где находится?

В предыдущем коде - вроде бы нет такого слова.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
13.09.2017, 21:19
OlegSmirnov, тут http://help.adobe.com/ru_RU/Fl... angle.html
0
1 / 1 / 0
Регистрация: 07.01.2017
Сообщений: 78
22.09.2017, 06:14  [ТС]
TanaTiX , понял.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2017, 06:14
Помогаю со студенческими работами здесь

Пакетная обработка изображений с сохранением пропорций
Здравствуйте. Суть такова: есть например 1000 фото с расширением 2000х3000 или 1500х1200 и др., но всем картинкам надо сделать высоту...

Картинка на всю высоту с сохранением пропорций
У меня fixed-блок, в нём картинка, которая должна быть на всю высоту, но максимум на всю ширину. Как такое реализовать? Пропорции должны...

Алгоритм уменьшения изображения с сохранением пропорций
Приветствую. Имеется набор картинок произвольного разрешения, подскажите алгоритм, для уменьшения размера изображений, при этом требуется ...

Деление частоты импульсов с сохранением пропорций
Доброго времени суток, форумчане. В делителе частоты на 2 нужно чтобы отношение длительности высокого уровня к низкому на выходе делителя...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru