Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   проигрыватель swf (http://www.flasher.ru/forum/showthread.php?t=179429)

Ylik 15.05.2012 00:47

проигрыватель swf
 
Здравствуйте, люди!
Тема не новая, но я всё перерыла, так и не нашла ничего. Поэтому решила задать вам вопрос.
Скажите, пожалуйста, вот как всё-таки связать полосу воспроизведения в одной swf и кадры в другой (подгружающейся) swf, так, чтобы можно было ею управлять: перематывать на любое место (как в плеере).
Пауза и плей - это понятно. А как вот так сделать, чтоб при воспроизведении swf перемещался бегунок на полосе? Или, при его перемещении, swf перематывался на соответствующее место?
Помогите советом, пожалуйста. Это для меня прям загадка. :rolleyes:

AzagThoth 15.05.2012 02:09

Код AS1/AS2:

Class public dynamic class MovieClip 
_currentframe:Number  [read-only]
_totalframes:Number  [read-only]

Остальное в хелпе.

Ylik 15.05.2012 14:06

Спасибо, но я ничего не поняла :o

Hauts 15.05.2012 14:53

Вложений: 1
Вложение 27971

Смотрите пример. Если будет непонятно — пишите :)

Ylik 15.05.2012 16:11

Тааак, уже что-то похожее на то, что я спрашивала! :)
Пока пытаюсь разобраться!!!
Там не хватает ваших комментариев. :D

Добавлено через 10 минут
Начались вопросы: :)
что такое this.pressed, this.pressStartX - ?

Hauts 15.05.2012 17:00

Цитата:

что такое this.pressed, this.pressStartX - ?
pressed - логическая переменная, обозначающая, что кнопка зажата.

pressStartX - численная переменная, хранящая локальное положение мышки на момент нажатия на кнопку. Это для того, чтобы бегунок (кнопка) двигалась "зацепившись" при нажатии тем местом, на которое нажали мышкой.

AzagThoth 15.05.2012 18:09

Цитата:

Сообщение от Ylik (Сообщение 1079621)
Спасибо, но я ничего не поняла :o

Всё достаточно просто. Рисуете скроллер. Программируете его как вам нравится. Затем смотрите общее количество кадров _totalframes подгруженной флешки и при скроллинге высчитываете пропорционально какой точке скроллера соответствует какой кадр от общего количества кадров. Таким образом становится ясно на какой кадр нужно перемотать. Перематываете просто через gotoAndStop(цифраКадра) или gotoAndStop(цифраКадра)

Ylik 15.05.2012 19:28

Цитата:

Сообщение от AzagThoth (Сообщение 1079663)
Всё достаточно просто. Рисуете скроллер. Программируете его как вам нравится. Затем смотрите общее количество кадров _totalframes подгруженной флешки и при скроллинге высчитываете пропорционально какой точке скроллера соответствует какой кадр от общего количества кадров. Таким образом становится ясно на какой кадр нужно перемотать. Перематываете просто через gotoAndStop(цифраКадра) или gotoAndStop(цифраКадра)

Вот этот принцип я и поняла, но я не поняла, каким образом пропорционально высчитывать отношение длины скролла и общего количества кадров флешки. :wacko:

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

AzagThoth 16.05.2012 03:48

Псевдокод
Код:

//определяем отношение в для одного процента кадров и длины
отношениеКадров=флешка.количествоКадров/100;
отношениеДлины=скролл.длинаСкролла/100;
нужныйКадр=округлить(скролл.координатаМыши/отношениеДлины*отношениеКадров);//но прежде убеждаемся, что координата мыши попадает под область скролла например хитТестом
флешка.мотать(нужныйКадр);

Кроме того, чтобы скроллер адекватно реагировал на проигрывание флешки понадобится завести функцию вызываемую по интервалу (интервал наверное будет лучше определить по фреймрейту)
В данной функции читаем текущийФрейм флешки и позиционируем скроллер по считанному значению. Также можно добавить в данной функции сравнение текущегоФрейма и количестваФреймов, так будет просто определить что флешка подошла к концу.
Разумеется это только один из способов. На ум пришло ещё как минимум 4.

И ещё один маленький момент. Разбирать готовый код, для того чтобы решить задачу не самая лучшая практика. Хотя, конечно, у каждого свои методы в решении задач. Но как то вот пришёл к такому умозаключению. Проблема в том, что с готовым кодом проще повторить решение - нежели научиться его генерировать.

Главное не отступайте. Не в этой задаче, не в какой либо другой. И всё обязательно получится. Какой-то щелчок в голове, и решение - вот оно. Проблема в том, что оперируя с готовыми решениями можно так и не придти к этому состоянию.

Удачи вам. Если будут какие вопросы - пишите.

Ylik 16.05.2012 14:55

Я вот как раз пыталась сделать плеер самостоятельно, но почему-то у меня постоянно что-нибудь не работало (ну и самая большая сложность, что я не смогла сделать - зависимость положения ползунка от кого, на каком кадре проигрывается флешка).
Делала что-то типа того, что вы написали, но немного примитивнее (потому и не работало, видимо).

В том примере, который мне дали здесь, я пыталась задать условие, чтобы при нахождении на последнем кадре, подгружаемая флешка останавливалась. Но оно как-то странно работало (но не так как надо).
Поэтому я не пойму, как ещё определить, что флешка находится на последнем или на 1 кадре.
(То есть при первом запуске первый кадр определяется, а при повторном воспроизведении - нет). :o


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

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