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

Вернуться   Форум Flasher.ru > Работа над сайтом > HTML/DHTML/CSS/JS/VB

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

Регистрация: Oct 2009
Сообщений: 6
По умолчанию Переход к нужному кадру из JavaScript.

Всем Здравствуйте.
У меня есть код на HTML (кнопки) и на JavaScript (действия кнопок)и есть Flash ролик на странице
Через JavaScript кнопки связаны с Flash роликом. Работают 2 из 3 кнопки. А именно полностью остановить ролик и проиграть его с того места где была применена кнопка стоп. Все просто. Но знаний не хватает. Какой должен быть код, чтобы при нажатии на 3 кнопку проигрался 30 кадр ролика ?

Мой код :

PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" >
<
head>
    <
title>Flash</title>
</
head>
<
body>
  <
div>
    <
object id="movieIE" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="400">
      <
param name="movie" value="discoball.swf"/>
      
       
      <!--[if !
IE]>-->
      <
object id="movie" type="application/x-shockwave-flash" data="discoball.swf" width="400" height="400">
      <!--<![endif]-->
        <
p>Alternative content</p>
      <!--[if !
IE]>-->
      </
object>
      <!--<![endif]-->
    </
object><br />
    <
input id="play" type="button" onclick="playFlash()" value="play"/>
    <
input id="30Frame" type="button" onclick="30FrameFlash()" value="30Frame"/>
    <
input id="stop" type="button" onclick="stopFlash()" value="stop"/>
  </
div>
  <
script type="text/javascript">
            var 
flash = {};
      if (
navigator.appName.indexOf("Microsoft") != -1flash document.getElementById("movieIE");
      else 
flash document.getElementById("movie");
 
      if (
flash.IsPlaying() == true) {
          
flash.StopPlay();
          
flash.Rewind();
      }
      function 
playFlash() {
          if (
flash.PercentLoaded() == 100)
              
flash.Play();
      }
      function 
stopFlash() {
          
flash.StopPlay();
      }
      function 
30FrameFlash() {
          
flash.??? (на что заменить вопросикичтобы работало как описано выше ?)
      }
</script>
</body>
</html> 

Старый 17.08.2012, 07:37
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Я так полагаю, флешка не ваша?
Дело в том, что методы flash.Rewind(), flash.StopPlay() и пр. запрограммированы в самой флешке, это кастомные методы, которые придумал разработчик.
Соответственно, нужно внести изменения в код самой флешки и заново ее скомпилировать.
Нужен исходник самой флешки, полученный легальным путем. А хаки мы тут не обсуждаем.
__________________
Идите первым!

Старый 17.08.2012, 14:08
Mokujin вне форума Посмотреть профиль Отправить личное сообщение для Mokujin Найти все сообщения от Mokujin
  № 3  
Ответить с цитированием
Mokujin

Регистрация: Oct 2009
Сообщений: 6
флешка моя - там была флешка с встроенным AS кодом, который менял цвета кружочков на шарике и анимация моушен твин с следованием по направляющей (и она добыта легально ибо это исходник с демонстрацией AS кода ) Я все внутри удалил и сделал просто кружочек со сменой цвета каждые 30 кадров сделал мушн шэйп между ними и получилась плавная смена цвета. никакого AS кода внутри нету. А код на JS взят из примера найденного в сети.

Добавлено через 2 часа 16 минут
Разобрался !
вот правильный код, я просто пытался как бы это в AS было GoToAndPlay (30); написать а надо было просто flash.GotoFrame (30);

вот правильный код с комментами (но вопросы наверное будут по ходу разработки) :

PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" >
<
head>
    <
title>Flash</title>
</
head>
<
body>
  <
div>
    <
object id="movieIE" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="400">
      <
param name="movie" value="discoball.swf"/>
      
       
      <!--[if !
IE]>-->
      <
object id="movie" type="application/x-shockwave-flash" data="discoball.swf" width="400" height="400">
      <!--<![endif]-->
        <
p>Alternative content</p>
      <!--[if !
IE]>-->
      </
object>
      <!--<![endif]-->
    </
object><br />
    <
input id="play" type="button" onclick="playFlash()" value="play"/>
    <
input id="Frame" type="button" onclick="FrameFlash()" value="30Frame"/>
    <
input id="stop" type="button" onclick="stopFlash()" value="stop"/>
  </
div>
  <
script type="text/javascript">
      var 
flash = {};
      if (
navigator.appName.indexOf("Microsoft") != -1flash document.getElementById("movieIE");
      else 
flash document.getElementById("movie");
 
      if (
flash.IsPlaying() == true) {
          
flash.StopPlay(); // Остановили флешку в если она уже прооигрывается в момент загрузки страницы.
          
flash.Rewind(); // Начали играть флешку сначала таймлайна на главной сцене.
      
}
      function 
playFlash() {
          if (
flash.PercentLoaded() == 100// Проверили на сколько процентов загружена флешка на странице.
              
flash.Play(); // Начали проигрывание ролика с места остановки.
      
}
      function 
stopFlash() {
          
flash.StopPlay(); // Остановили проигрывание ролика.
      
}
      function 
FrameFlash() {
          
flash.GotoFrame (30); //Перешли на 30 кадр и остановились.
          
flash.Play(); // Начали проигрывать с места остановки "30 кадр".
      
}
</script>
</body>
</html> 
Все было просто !

Добавлено через 7 часов 7 минут
Но теперь возник другой вопрос. А как передать вместо четко определенного кадра - случайное число от 0 до 5 например ? Чтобы при получении 1 перехедил в сответствующий кадр ?
я пробовал использовать генератор чисел напрямую - невышло - переходит только в последний кадр, видимо потому что требует значание типа число в аргументе а переменная - не является напрямую числом... как быть ?

Добавлено через 11 часов 20 минут
Справился и с этим...
но теперь еще вопрос... Но сначала код.
Код

PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" >
<
head>
    <
title>Flash</title>
</
head>
<
body>
  <
div>
    <
object id="movieIE" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="400">
      <
param name="movie" value="random.swf"/>
      
       
      <!--[if !
IE]>-->
      <
object id="movie" type="application/x-shockwave-flash" data="random.swf" width="400" height="400">
      <!--<![endif]-->
        <
p>Alternative content</p>
      <!--[if !
IE]>-->
      </
object>
      <!--<![endif]-->
    </
object><br />
    <
input id="play" type="button" onclick="playFlash()" value="play"/>
    <
input id="Frame" type="button" onclick="FrameFlash()" value="RNDFrame"/>
    <
input id="stop" type="button" onclick="stopFlash()" value="stop"/>
  </
div>
  <
script type="text/javascript">
      var 
rndvalueMath.floor(Math.random()*5); // Создали переменную с вложенным случайным значением в промежутке от 0 до 5.
      
var flash = {};
      if (
navigator.appName.indexOf("Microsoft") != -1flash document.getElementById("movieIE");
      else 
flash document.getElementById("movie");
 
      if (
flash.IsPlaying() == true) {
          
flash.StopPlay(); // Остановили флешку в если она уже прооигрывается в момент загрузки страницы.
          
flash.Rewind(); // Начали играть флешку сначала таймлайна на главной сцене.
      
}
      function 
playFlash() {
          if (
flash.PercentLoaded() == 100// Проверили на сколько процентов загружена флешка на странице.
              
flash.Play(); // Начали проигрывание ролика с места остановки.
      
}
      function 
stopFlash() {
          
flash.StopPlay(); // Остановили проигрывание ролика.
      
}
      function 
FrameFlash() {
          
flash.GotoFrame (rndvalue); //Перешли на 30 кадр и остановились. // сейчас стоит переменная со случайным значением в промежутке от 0 до 5.
          //ЗАКОММЕНЧЕННО ВРЕМЕННО!!! flash.Play(); // Начали проигрывать с места остановки "30 кадр".
      
}
</script>
</body>
</html> 
Собственно Рандом срабатывает только 1 раз при нажатии на кнопку, а хочется, чтобы при каждом нажатии выдавался новый рандом, а новый выдается только после перезагрузки страници - как это реализовать ?

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

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

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


 


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


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