使用Flash中的按钮从帧访问变量

使用Flash中的按钮从帧访问变量,flash,actionscript,Flash,Actionscript,我是一个Flash开发的初学者,最近我被指派在工作中修复一个旧的Flash项目。本质上,该应用程序是一个视频展台,用户可以通过其网络摄像头录制多达60秒的视频,然后通过电子邮件、twitter或facebook进行共享 当应用程序启动时,将生成一个视频ID,当视频流传输并保存到服务器时,该ID将用作视频的文件名。我确信有更好的方法可以做到这一点,但我想到的方法是获取视频ID并将其作为URL变量传递到“共享”页面,然后使用该URL变量从服务器访问和共享视频 问题是,我不知道如何通过将用户发送到“共

我是一个Flash开发的初学者,最近我被指派在工作中修复一个旧的Flash项目。本质上,该应用程序是一个视频展台,用户可以通过其网络摄像头录制多达60秒的视频,然后通过电子邮件、twitter或facebook进行共享

当应用程序启动时,将生成一个视频ID,当视频流传输并保存到服务器时,该ID将用作视频的文件名。我确信有更好的方法可以做到这一点,但我想到的方法是获取视频ID并将其作为URL变量传递到“共享”页面,然后使用该URL变量从服务器访问和共享视频

问题是,我不知道如何通过将用户发送到“共享”页面的按钮访问视频ID

代码如下:

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的不速之客,非常感谢任何人能提供的任何帮助


谢谢。

您不需要从press函数中取消声明var vidID

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

如果在button函数中使用var vidId:String=,则它是该函数的局部变量。如果您在全局意义上声明它,则它可用于时间轴上的任何函数。只要从主时间线抓取var,您就可以开始了

我试过了,但当我这么做时,url显示为:www.domain.com/share?id=,这表明当代码运行时,vidId没有值。我假设您使用的是AS2,使用的是_root?如果是这样的话,一个简单的方法就是将其设置为全局的:_global.vidId=vidId,在执行configName()之后,它应该可以在swf的任何位置(嵌套或非嵌套)使用!这完全符合预期。谢谢你的帮助,jpea.:)