Доступ к переменной из фрейма с помощью кнопки во Flash - PullRequest
0 голосов
/ 25 марта 2011

Я новичок в разработке Flash, и мне только недавно было поручено исправить старый проект Flash на моей работе. По сути, приложение представляет собой видеостудию, благодаря которой пользователи могут записывать до 60-х видеоклипов через свою веб-камеру, а затем обмениваться ими по электронной почте, в Твиттере или Facebook.

При запуске приложения генерируется идентификатор видео, который используется в качестве имени файла видео, когда оно передается в потоковом режиме и сохраняется на сервере. Я уверен, что есть лучший способ сделать это, но я пришел к выводу, что нужно взять этот идентификатор видео и передать его на страницу «Поделиться» в качестве переменной URL, а затем использовать его для доступа к видео и обмена им с сервер.

Проблема в том, что я не знаю, как получить доступ к идентификатору видео с кнопки, которая отправляет пользователя на страницу «Поделиться».

Вот код:

var nc:NetConnection = new NetConnection();
var ns:NetStream;
var cam:Camera;
var mic:Microphone;
var vidId:String = configName();

function tracer(p_s) {
trace(p_s);
}
nc.onStatus = function(p_o:Object):Void  {
//tracer(p_o.code);
if (p_o.code == "NetConnection.Connect.Success") {
    setupApp();
}
};
function configName():String {
var charStr:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var s1:String = charStr.charAt(random(charStr.length));
var s2:String = charStr.charAt(random(charStr.length));
var oDate:Date = new Date();
var vidDate = oDate.getMonth()+1+""+oDate.getDate()+""+oDate.getFullYear()+""+oDate.getHours()+""+oDate.getMinutes()+""+oDate.getMilliseconds();
var vidName:String = s1+vidDate+s2;
return vidName;
}
function setupApp() {
tracer("setupApp"+vidId);
ns = new NetStream(nc);
ns.onPlayStatus = function(p_o):Void  {
    tracer(p_o.code);
    var o:Object = new Object();
    o.target = replay;
    onStop(o);
};
cam = Camera.get();
mic = Microphone.get();
cam.setMode(640,480,15);
cam.setQuality(100000,0);
attachAV();
recordNow.addEventListener("click", onRecord);
replay.addEventListener("click", onPlay);
}
function attachAV():Void {
tracer("attachAV");
nowLive_video.attachVideo(cam);
nowLive_video.attachAudio(mic);
}
function onRecord():Void {
tracer("onRecord");
ns.attachVideo(cam);
ns.attachAudio(mic);
ns.publish("pending/"+vidId, "record");
recordNow.removeEventListener("click",onRecord);
recordNow.addEventListener("click",onStop);
//recordNow.setLabel("Stop");
pbar.play();
btnSkin.gotoAndStop("recordStop");
replay.enabled = false;
tellTarget ("_root.get_ready") {
    play();
}
unpause();
}
function onPlay():Void {
tracer("onPlay "+vidId);
nowRecord_video.attachVideo(ns);
nowRecord_video.attachAudio(ns);
ns.play("pending/"+vidId);
replay.removeEventListener("click", onPlay);
replay.addEventListener("click", onStop);
replay.setLabel("Stop");
recordNow.enabled = false;
}
function onStop(p_o:Object):Void {
tracer("onStop");
if (p_o.target == recordNow) {
    tracer(p_o.target);
    ns.publish(false);
    recordNow.removeEventListener("click", onStop);
    recordNow.addEventListener("click", onRecord);
    //recordNow.setLabel("Record");
    pbar.stop();
    cutScreen.play();
    btnSkin.gotoAndStop("recordNorm");
    replay.enabled = true;
    restartTimer();
    //onPlay();
    accept.play();
} else if (p_o.target == replay) {
    tracer(p_o.target);
    ns.play(false);
    nowRecord_video.clear();
    replay.removeEventListener("click", onStop);
    replay.addEventListener("click", onPlay);
    replay.setLabel("Replay");
    recordNow.enabled = true;
}
}

nc.connect("my_server_url");

А это код кнопки, которая перенаправит пользователя на нужную страницу:

on (press) {

        var vidId:String = (what do I put here?);
        getURL("share/?id="+vidId, "_self");
}

Я прошу прощения, если что-то из этого неясно - я абсолютный новичок во Flash и буду признателен за любую помощь, которую может предложить каждый.

Спасибо.

1 Ответ

0 голосов
/ 25 марта 2011

Вам не нужно отменять объявление var vidID в функции нажатия

on (press) {
    getURL("share/?id="+vidId, "_self");
}

Если вы используете var vidId: String = в функции кнопки, это локальная переменная этой функции.Если вы объявите это в глобальном смысле, это будет доступно любой функции на вашей временной шкале.Просто возьмите переменную из основного графика, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...