Search code examples
functionactionscript-3flashdesktopflvplayback

AS3: How do I call a function with two arguments - (vBox, and vFile)


Adobe Flash CC

Sort of confused here. I'm working on optimizing my code so that instead of calling launchVideo(); for every single video I can can simply call it once, while passing a new source string to the function.

How do I call the launchVideo function from within another function?

When I add an event listener, which calls the playMPMovie

buttonOne.addEventListener(MouseEvent.MOUSE_DOWN, playMPMovie, false, 0, true);
function playMPMovieOne(): void {
    video_file = "/videos/MP_01.mp4";
    launchVideo();
}

I get this...

Scene 1, Layer 'actions', Frame 1, Line 21, Column 2    1136: Incorrect number of arguments.  Expected 2.

When I try adding (vBox, vFile) to launchVideo(); I get this...

Scene 1, Layer 'actions', Frame 1, Line 20, Column 20   1120: Access of undefined property vFile.
Scene 1, Layer 'actions', Frame 1, Line 20, Column 14   1120: Access of undefined property vBox.

Here is the full code.

stop();

import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Graphics;
import fl.video.*;


vinetteMC.visible = false;

// VARIABLES //
var video_holder: MovieClip = new MovieClip();
var video_file: String;

// EVENT LISTENERS //
buttonOne.addEventListener(MouseEvent.MOUSE_DOWN, playMPMovie, false, 0, true);
function playMPMovieOne(): void {
    video_file = "/videos/MP_01.mp4";
    launchVideo();
}

// Place Playback
function launchVideo(vBox, vFile): void {

    var flvPlayer: FLVPlayback = new FLVPlayback();
    import fl.video.*;
    import flash.events.*;

    flvPlayer.source = vFile;
    flvPlayer.skinAutoHide = true;
    flvPlayer.skinBackgroundColor = 0x000000;

    flvPlayer.width = 1920;
    flvPlayer.height = 1080;

    flvPlayer.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
    function completeHandler(event: Event): void {

        removeChild(video_holder);
        removeChild(flvPlayer);
        flvPlayer.addEventListener(fl.video.VideoEvent.COMPLETE, completeHandler, false, 0, true);
        trace("Complete handler called");
    }

    vBox.addChild(flvPlayer);
}

launchVideo(video_holder, video_file);

Solution

  • It looks like you are wanting to call

    function playMPMovieOne(): void {
        video_file = "/videos/MP_01.mp4";
        launchVideo(video_holder, video_file)
    }
    

    Also from your example code the video holder is created but never added to the display list. You may need to add this to see anything.

    addChild(video_holder);