Форум 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)
-   -   Просмотр с исключением отмеченных кадров (http://www.flasher.ru/forum/showthread.php?t=143750)

intensiv 24.08.2010 22:17

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

FriOne 25.08.2010 00:24

Конкретней спроси... простой способ - это знать AS

intensiv 25.08.2010 00:31

Конечно все это мыслится с помощью программы на AS, который работает во Flash MX. Пока не получается метить кадры и исключать их из повторного просмотра

FriOne 25.08.2010 00:43

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

mooncar 25.08.2010 00:48

Какого вы хотите совета?
Неизвестно, как у вас физически пользователи будут отмечать кадры (останавливать воспроизведение или ловить кликами на лету) когда именно ролик будет проигрываться повторно.
Слишком расплывчато вопрос задаете.

При такой общей постановке вопроса могу такой вариант подсказать:
Например, создайте массив и заносите туда при клике мыши значения _currentframe по мере первого воспроизведения. Это будут ненужные. Типа:
Код AS1/AS2:

var unnecess:Array = new Array(); //массив номеров ненужных кадров
this.onMouseDown = function  ()
{
        unnecess.push(_currentframe);//добавляем номера ненужных по мере первого воспроизведения
};

При повторном воспроизведении должна работать функция, которая бы управляла роликом:
Код AS1/AS2:

this.stop();
var arrPosition:Number = 0;  //текущее положение проверки массива ненужных кадров
this.onEnterFrame = function  ()
{       
        if (_currentframe + 1 != unnecess[arrPosition])//если следующий за текущим кадром не является следующим игнорируемым
        {
                nextFrame(); //идем на след. кадр
        }
        else
        {
                gotoAndStop(_currentframe + 2); //если следующий за текущим является следующим игнорируемым, то перескакиваем через него
                arrPosition++; //и увеличиваем на 1 позицию проверки по массиву ненужных
        }
}

То есть не давать ролику проигрываться самостоятельно, а управлять переходами по кадрам с помощью функции.

Разумеется, это не готовый код, а в большей степени базвая логика. Работать просто так это не будет. Все остальное дописывается по обстоятельствам. Они вам виднее, поэтому можете взять за основу мой совет. Ключевой момент здесь - это не отбор ненужных, а сама функция управления воспроизведением.

Более "простого" способа в голову не приходит.

FriOne 25.08.2010 00:53

Немного погорячился, у меня почему-то на кадры аллергия..

intensiv 25.08.2010 14:39

Спасибо! Идея понятна. И понятно, что недостаточно подробно изложил свою задачу. А она сводится к тому, что ученик должен листать страницы электронного учебника, при этом пользоваться кнопкой "Знаю", если учебное содержание ему понятно и кнопкой "Не знаю", если содержание еще не усвоено. При нажатии первой кнопки должны отмечаться понятые кадры, чтобы потом при повторном воспроизведении фильма (при переходе с последего кадра на первый) их исключить из предъявления, а предъявлялись только непонятые учебные материалы. При нажатии второй кнопки осуществляется просто переход к очередной странице. При последующих воспроизведениях всего учебника количество непонятых страниц должно уменьшаться и в конечном итоге сведется к нулю - тогда весь учебник будет усвоен.
Может быть эта более подробная информация позволит довести приведенный уже ранее код до уровня работающей программы. У меня пока это не получается. Заранее благодарен.

mooncar 25.08.2010 15:10

Нет, писать за вас ваши программы тут не принято. Разобраться с проблемой, помочь советом, накидать небольшой (или большой, если тема интересна) пример - да.
Обратитесь в раздел Вакансии с этим ТЗ. Или начните писать - хотя бы для начала саму листалку страниц.

rainbowrussia 25.08.2010 15:26

SharedObject вам в помощь для запоминания пропускаемых страниц.

intensiv 25.08.2010 18:41

Просьба помочь разобраться. Приведенный ранее код не записывает номера отмеченных кадров и соответственно дальше не работает:

Код AS1/AS2:

var unnecess:Array = new Array(); //массив номеров ненужных кадров
this.onMouseDown = function  ()
{
        unnecess.push(_currentframe);//добавляем номера ненужных по мере первого воспроизведения
};
trace(_currentframe);
 
this.stop();
var arrPosition:Number = 0;  //текущее положение проверки массива ненужных кадров
this.onEnterFrame = function  ()
{       
        if (_currentframe + 1 != unnecess[arrPosition])//если следующий за текущим кадром не является следующим игнорируемым
        {
                nextFrame(); //идем на след. кадр
        }
        else
        {
                gotoAndStop(_currentframe + 2); //если следующий за текущим является следующим игнорируемым, то перескакиваем через него
                arrPosition++; //и увеличиваем на 1 позицию проверки по массиву ненужных
        }
}//То есть не давать ролику проигрываться самостоятельно


mooncar 25.08.2010 19:50

Сам по себе этот код не будет работать, я же писал об этом. Это были части некой базовой логики для некого абстрактного ролика, который первый раз проигрывается сам по себе, второй раз с помощью функции. Я привел его, чтобы донести идею.
Не надо хвататься за этот код.
Делайте пока простую листалку с применением nextFrame(), prevFrame(), потом можно добавлять запоминание ненужных кадров.
Кстати, если у вас предполагается некое длительное использование учебника (то есть не в один сеанс), то лучше массив номеров ненужных кадров сохранять по совету в SharedObject. Тогда информация об игнорируемых кадрах можно будет использовать при повторных запусках учебника.

И еще - либо оформите код тегами в последнем сообщении, а лучше его вообще удалите, он уже был приведен выше.

intensiv 25.08.2010 21:21

Простая листалка у нас уже работает, например http://akme82.narod.ru/kinostimul_slovar.swf Назрел вопрос запоминания и исключения из демонстрации ненужных кадров. При этом массив номеров ненужных кадров нет необходимости сохранять - этот процесс очень индивидуальный и все обучение осуществляется за один сеанс. Поэтому просьба помочь в доведении предложенного кода до действующего состояния.

FriOne 25.08.2010 22:50

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

intensiv 25.08.2010 23:18

Если оценили саму идею, помогите ее овеществить в действующий код. А всякие бантики навесить на нее для нас не проблема. Тем более, что нами наработано множество тонкостей, в результате которых курс иностранного языка изучается у нас всего за 2 недели http://intensiv.narod.ru/lang.html

FriOne 26.08.2010 00:11

Не могу помочь, в данный момент занят другим сайтом, но если бы вы начнете изучать AS думаю все получится, вроде задача не сильно сложная..
Да и сказать честно начал изучать язык с даты регистрации на этом форуме) Пока не занимался ООП, так что можно сказать и не начинал..

intensiv 26.08.2010 00:31

Курс AS у нас есть в неплохом объеме http://akme82.narod.ru/flash6.html и он в этом объеме изучен. И все же после прохождения этого курса пока не удается решить нашу задачку без содействия опытного специалиста. Если освободитесь от вашего сайта, просьба помочь. Мы же сможем помочь вам по части английского или других интенсивных курсов.


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

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