Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не выводится список названий видеороликов в компоненте List из файла XML (http://www.flasher.ru/forum/showthread.php?t=207113)

mariamarfi 25.03.2014 12:29

Не выводится список названий видеороликов в компоненте List из файла XML
 
Вложений: 1
Ошибка... AS3 + XML + flvPlayer + List

Монтажный кадр 1, слой "AS3", кадр 1, строка 47 1119: Обращение возможного неопределенного свойства COMPLETE через ссылку со статическим типом Class .

Я новичок в этом деле. Не судите меня строго.... Спасибо за понимание.


У меня почему-то не выводится список названий фильмов в List из XML???


AS3:
Код AS3:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.video.FLVPlayback;
 
 
var counter: uint = 0;
var myxml: XML = new XML();
 
//////////////////////////////////
/*
var flvPlayer: FLVPlayback = new FLVPlayback();
flvPlayer.skin = "SkinOverPlaySeekMute.swf";
flvPlayer.autoPlay = false;
flvPlayer.skinAutoHide = true;
addChild(flvPlayer);*/

/////////////////////////////////
 
var myLoader: URLLoader = new URLLoader();
 
myLoader.load(new URLRequest("xmls/videos_thems_animale.xml"));
 
        myLoader.addEventListener(Event.COMPLETE, loaded);
 
        function loaded (event: Event)
        {
                myxml = XML(event.target.data);
 
                //--------List----------//
 
                var i:uint;
                //i++;
                //list.addItem( { label: i+". " + myxml.video[counter].@title} );
 
 
 
 
                for each ( var videos:XML in myxml.videos)
                {               
                        i++;
                        //var wordTitle:String = videos.title.toString();
                        list.addItem( { label: i+". " + myxml.video[counter].@title} );
 
            }
                var myArray = new Array (0,0);
        list.selectedIndices = myArray;
 
 
 
                //--------List----------//
 
                var videoIndex: Number = myxml.video.length()-1;
                trace(myxml, videoIndex);
                centerAlignAndPlay();
 
                btn_left.addEventListener(MouseEvent.CLICK,prevVideo);
                btn_right.addEventListener(MouseEvent.CLICK,nextVideo);
 
                function prevVideo(event:MouseEvent)
                {
                        if (counter>0)
                        {
                                counter--;
                                centerAlignAndPlay();
                        }
                        else
                        {
                                counter = 3;
                                centerAlignAndPlay();
                        }
                }
 
                function nextVideo(event:MouseEvent)
                {
                        if (counter<videoIndex)
                        {
                                counter++;
                                centerAlignAndPlay();
                        }
                        else
                        {
                                counter = 0;
                                centerAlignAndPlay();
                        }
                }
        }
 
        function centerAlignAndPlay()
        {
                flvPlayer.source = myxml.video[counter].@movie;
                flvPlayer.width = myxml.video[counter].@width;
                flvPlayer.height = myxml.video[counter].@height;
                flvPlayer.x = 200;
                flvPlayer.y = 150;
                title.text = myxml.video[counter].@title;
        }


XML:

Код:

<?xml version="1.0" encoding="utf-8"?>

<videos>
        <video movie="my_videos/thems/1. Zhivotnye/leopard.flv" width="500" height="281" title="Леопард"/>
        <video movie="my_videos/thems/1. Zhivotnye/tigr.flv" width="500" height="281" title="Тигр"/>
        <video movie="my_videos/thems/1. Zhivotnye/volk.flv" width="500" height="281" title="Волк"/> 
</videos>


mariamarfi 25.03.2014 12:39

Код AS3:

//--------List----------//
 
 
list.addEventListener(MouseEvent.CLICK, itemClick);
 
function itemClick (event:Event):void {
 
        title2.text = event.target.selectedItem.label;
        videoToPlay = event.target.selectedItem.wordString;
 
}
 
 
flvPlayer.addEventListener(VideoEvent.COMPLETE, onCompletePlayback);
 
function onCompletePlayback (event:Event):void {
        newVideo();
}
 
function newVideo():void {
        if (list.selectedItem.videoNum == i)
        {
        flvPlayer.stop();
                var selectFirst = new Array (0,0);
        list.selectedIndices = selectFirst;
                list.scrollToIndex(0);
                videoToPlay = list.selectedItem.wordString;
        }
        else
        {
        flvPlayer.stop();
                var sn:uint = list.selectedItem.videoNum;
                var selectNext = new Array (sn,sn);
        list.selectedIndices = selectNext;
                list.scrollToIndex(sn);
                videoToPlay = list.selectedItem.wordString;
 
        }
 
}
                for each ( var videos:XML in myxml..videos)
                {       
                        var i:uint;
                        i++;
                        var wordTitle:String = myxml.video[counter].@title.toString();
                        //list.addItem( { label: i+". " + videos.video[counter].@title} );
                        list.addItem( { label: i+ ". " + wordTitle,  wordTitle: videos.video[counter].@title, songNum: i} );
            }
                var myArray = new Array (0,0);
        list.selectedIndices = myArray;
 
                //--------List----------//

Это я пыталась переделывать на основе примера "Список музыки". Но у меня не получалось... =(((

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

Найдите, пожалуйста, мои ошибки....

Rivexe 25.03.2014 23:57

Цитата:

Сообщение от mariamarfi (Сообщение 1162398)
Монтажный кадр 1, слой "AS3", кадр 1, строка 47 1119: Обращение возможного неопределенного свойства COMPLETE через ссылку со статическим типом Class .

В коде нет импорта класса fl.video.VideoEvent в котором объявлена константа COMPLETE.
Добавьте импорт этого класса или напрямую обращайтесь к константе:
Код AS3:

flvPlayer.addEventListener(fl.video.VideoEvent.COMPLETE, onCompletePlayback);


mariamarfi 26.03.2014 23:14

Спасибо, исправила. Ролик проигрывается все нормально, а вот список не сработал... Почему?

Добавлено через 22 часа 22 минуты
После того, как флэш запустился, первый ролик из списка List и из файла XML должен проигрываться.
Кнопки перехода почему-то не соответствуют с item. Список List - с ним всё в порядке. Источник ролика и надписи меняются после нажатия на item. Но кнопки перехода сбиваются... =(( то есть неверно работают

Код AS3:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.video.FLVPlayback;
 
var i:uint;
var counter: uint = 0;
var myxml: XML = new XML();
var videoIndex: Number = myxml.video.length()-1;
 
//////////////////////////////////
/*
var flvPlayer: FLVPlayback = new FLVPlayback();
flvPlayer.skin = "SkinOverPlaySeekMute.swf";
flvPlayer.autoPlay = false;
flvPlayer.skinAutoHide = true;
addChild(flvPlayer);*/

/////////////////////////////////
 
var myLoader: URLLoader = new URLLoader();
 
myLoader.load(new URLRequest("xmls/videos_thems_animale.xml"));
 
myLoader.addEventListener(Event.COMPLETE, loaded);
 
function loaded (event: Event)
{
    myxml = XML(event.target.data);
    VideoPlay();
 
//===== Список из файла XML в компонент List =====//
    for each ( var videos:XML in myxml.*)
    {
      i++;
      list.addItem( { label: i+". " +videos.@title} );
    }
 
    var myArray = new Array (0,0);
    list.selectedIndices = myArray;
//===== / Список из файла XML в компонент List =====//     
 
 
//===========List. Обработчик.============//
//Изменение источника (видео и надпись) с помощью итема в листе,
//а кнопки синие для перехода в след/предыд ролик
 
    list.addEventListener(Event.CHANGE, onIndexChangeHandler); // нужно подписать список на событие "после изменения выбора"
    //затем в обработчике события подставлять нужные данные
 
    function onIndexChangeHandler(e:Event):void
    {
      var index:int = e.target.selectedIndex
      flvPlayer.source = myxml.video[index].@movie;
      flvPlayer.width = myxml.video[index].@width;
      flvPlayer.height = myxml.video[index].@height;
      flvPlayer.x = 80;
      flvPlayer.y = 150;
      title.text = myxml.video[index].@title;
    }
    //а нажатие кнопки должно просто менять индекс
/*  btn_left.addEventListener(MouseEvent.CLICK,prevVideoItem);
    btn_right.addEventListener(MouseEvent.CLICK,nextVideoItem);
 
 
    function prevVideoItem(event:MouseEvent):void
    {
        if(list.selectedIndex>0)
        list.selectedIndex -=1;
    }
 
    function nextVideoItem(event:MouseEvent):void
    {
        list.selectedIndex +=1;
 
    }*/

 
btn_left.addEventListener(MouseEvent.CLICK,prevVideo);
btn_right.addEventListener(MouseEvent.CLICK,nextVideo);
 
function prevVideo(event:MouseEvent):void
{
    if ((list.selectedIndex >0) && (counter > 0))
    {
        list.selectedIndex = counter -=1;
        VideoPlay();
    }
    else
    {
        counter = 3;
        VideoPlay();
    }
}
function nextVideo(event:MouseEvent):void
{   
    if ((list.selectedIndex < videoIndex) &&  (counter < videoIndex))
    {
        list.selectedIndex = counter +=1;
        VideoPlay();
    }
    else
    {
        list.selectedIndex = counter = 0;
        VideoPlay();
    }
}
 
//===========/ List============//
}
 
function VideoPlay()
{
    flvPlayer.source = myxml.video[counter].@movie; 
    flvPlayer.width = myxml.video[counter].@width;
    flvPlayer.height = myxml.video[counter].@height;
    flvPlayer.x = 80;
    flvPlayer.y = 150;
    title.text = myxml.video[counter].@title;
}



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

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