Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не получается при загрузке поставить ролик на stage (http://www.flasher.ru/forum/showthread.php?t=134246)

Killer_13 24.12.2009 18:37

Не получается при загрузке поставить ролик на stage
 
Есть 3 кнопки. По нажатию на каждую грузится видео.
Мне нужно, чтоб при загрузке ролика сразу грузилось первое видео, тоисть при нажатии на певую кнопку

Вот главная функция
Код AS3:

 public function Main() {
 
  if(stage) init();
  else addEventListener(Event.ADDED_TO_STAGE, init);
 
  v.addEventListener(Event.COMPLETE, onVideoLoad); // подписываемся на созданное событие загрузки
  v.loadMoviesXML("Mov.xml");
  v.loadMovie(v.loaded[0]);
 }

Вот код кнопок
Код AS3:

 private function click(event : MouseEvent) : void { 
 
  switch (event.target) {
 
  case btn1: {
    trace("1->>>>" + v.loaded[0]);
    v.loadMovie(v.loaded[0]);
    } break;
 
  case btn2:
    v.loadMovie(v.loaded[1]);
    trace("2->>>>" + v.loaded[1]);
    break;
 
  case btn3:
    v.loadMovie(v.loaded[2]);
    trace("3->>>>" + v.loaded[2]);
    break;
  }
 }
}

в функцию просто добавил такой код, как и по нажатию на кнопку, почему не срабатывает? Спасибо.

vitalFriend 24.12.2009 18:39

А покажите, пожалуйста, этот самый код, который добавили в функцию?

Killer_13 24.12.2009 18:52

вот
Код AS3:

v.loadMovie(v.loaded[0]);

просто добавил код который грузит ролик при нажатии 1 кнопки.

vitalFriend 24.12.2009 19:13

скорее всего загвоздка в том, что stage еще нет при при срабатывании этого кода. попробуйте перенести этот код в функцию init, которая запускается при stage==true

Killer_13 24.12.2009 19:20

та же ошибка,

Код AS3:

11->>>>undefined
Load new movie:  null
TypeError: Error #2007: Параметр url не должен быть равен нулю.
        at flash.display::Loader/_load()
        at flash.display::Loader/load()
        at VideoLoader/loadMovie()
        at Main/init()
        at Main()

вот не пойму, почему при клике на кнопку идет, а само по себе не хочет.. :(

alatar 24.12.2009 23:42

У вас XML в этот момент еще не загрузился. Дождитесь пока список загрузится.

Killer_13 24.12.2009 23:54

Понятн, а куда мне тогда этот кусочек кода поставить,
Код AS3:

v.loadMovie(v.loaded[0]);

чтоб грузился ролик сразу при загрузке?

alatar 25.12.2009 04:55

Судя по-всему в onVideoLoad, хотя не понятно что из себя представляет этот самый "v".

Killer_13 25.12.2009 12:14

Ставил в onVideoLoad - ничего не получается. :(
v экземпляр класса VideoLoader вот код

Код AS3:

package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.text.*;
 
public class VideoLoader extends Sprite {
 
private var loadStatus : TextField = new TextField();
public var loaded : Array = [];
public var loader : Loader = new Loader();
 
public function VideoLoader() {
 trace("11->>>>" + loaded[0]);
 addChild(loader);
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMovieLoaded);
}
 
private function onMovieLoaded(e : Event) : void {
 //loaded.push((e.currentTarget as LoaderInfo).content.parent);  // parent для AVM1
 trace('Movie Loaded #', loaded.length, (e.currentTarget as LoaderInfo).content);
 dispatchEvent(new Event(Event.COMPLETE)); // создаем событие на загрузку
}
 
public function loadMovie(url : String) : void {
 trace('Load new movie: ', url);
 
 loader.load(new URLRequest(url));
}
 
public function loadMoviesXML(xmlUrl : String) : void {
 trace('Load XML', xmlUrl);
 var loader : URLLoader = new URLLoader();
 loader.addEventListener(Event.COMPLETE, onMoviesXMLLoad);
 loader.load(new URLRequest(xmlUrl));
}
 
private function onMoviesXMLLoad(e : Event) : void {
 trace('XML loaded');
 var xmlData : XML = new XML((e.target as URLLoader).data);
 var movies : XMLList = xmlData..datname;
 for (var i : int = 0;i < movies.length();i++) {
          loaded.push(movies[i].toString());
 }
// loadMovie(this.loaded[0]); // новая строка
}
}
}


alatar 25.12.2009 19:33

onMovieLoaded срабатывает когда загружено видео (по событию Event.COMPLETE). Т.е. что бы вызвался этот метод, предварительно надо вызвать loadMovie. Если тебе надо автоматом загрузить видео (с событиями ты судя по всему не дружишь) раскомментируй строку // loadMovie(this.loaded[0]); // новая строка в onMoviesXMLLoad.

Killer_13 25.12.2009 20:02

Воооооттт я тупой, - не досмотрел!!!
Все верно видео грузилось сперва, все работало, только мне казалось, что по клике на кнопки я мельком вижу то видео которое грузилось первым.!

А только что проверил, - оказывается!!! - У ВСЕХ МОИХ 3 ВИДЮШЕК 1 КАДР ОДИНАКОВЫЙ!!!
Потому я сначало мельком видел одну и ту же картинку.
Стараюсь подружиться с собитиями, уже много прочитал о них.

Спасибо большое! ВОПРОС РЕШЕН!


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

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