0
我是Flash開發人員的初學者,最近我剛剛被指派在我的工作中修復舊的Flash項目。本質上,該應用程序是一個視頻展臺,用戶可以通過網絡攝像頭錄製長達60秒的視頻,然後通過電子郵件,Twitter或Facebook分享。在Flash中使用按鈕訪問一個框架中的變量
當應用程序啓動時,會生成一個視頻ID,並在流式傳輸並保存到服務器時用作視頻的文件名。我相信有一個更好的方法可以做到這一點,但我想出的方法是獲取該視頻ID並將其作爲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的總noob,並希望任何人都可以提供幫助。
謝謝。
我試過這個,但是當我這樣做的時候,這個url出現了:www.domain.com/share?id=,這表明當這段代碼運行時,vidId沒有值。 – 2011-03-24 21:24:18
我假設你使用_root使用AS2?如果是這樣的話,一個簡單的方法就是使它像全局一樣:_global.vidId = vidId在你完成configName()之後 - 那麼它應該在swf的任何位置可用(嵌套或不可嵌套) – jpea 2011-03-24 21:27:05
輝煌!這完全按照預期工作。謝謝你的幫助,jpea。 :) – 2011-03-24 21:41:48