作者:屈超(Chappell.Wat)
发布时间:May 27, 2006
分类:程式::五代
Youtube 自从在视频加入 Session 机制以后……
不仅直接下载已经成为往事……
而且即使你附带 Session 参数进行播放也仅仅只有几分钟的有效期……
(与此不同的是 Vlog 的 Session 方式……
它的时效长很多……)
这样一来得使用 Youtube 的官方的播放器……
由于我给 AnyMedia 使用内建播放器……
理所当然就只能支持几分钟的时效了……
AnyMedia 对 Youtube 视频的支持也失效了……
于是我昨天研究了一下如何继续使用自定义的 Flv 播放器来播放 Youtube 视频……
由于 Action Script 的 LoadVars 函式有跨域限制……
所以我选择通过 PHP 获取视频真实地址……
然后再通过 Flash 获取本地 PHP 提供的地址……
(至于为什么 PHP 需要获取两次视频地址……
原因是前一次页面发送了 Location Header ……
而似乎播放器不能处理报文头的转向信息……)
好歹终于可以播放了……
由于每次播放都必须通过建立远程连接来获取地址……
所以播放前得缓劲儿几十秒……
下面提供全部相关文件……
程序未加密未混淆……
希望您转载时保留俺的部落格地址……
原始地址:http://www.youtube.com/watch?v=iCTrSL9i1EM
演示:
《CountDown》 by Hyde
下载:
Box 下载: http://www.box.net/public/arkxmaufo4
作者:屈超(Chappell.Wat)
发布时间:May 21, 2006
分类:程式::五代
前言
AnyMedia 自从 3.0.0 版本附带了多国语言包……
昨天也收到 Oberguru 翻译的德文版本……
当然……
除了主体文件实现多语言还不够……
包括安装、升级文档在内的部分也得相应提供多语言才行……
为了赶在 3.5.1 释出之前实现文档的多语言系统……
于是到处寻找 JavaScript 版本的多语言系统……
未果……
使用 xml + xsl 的倒是找到一个……
可惜对浏览器支持太差……
恼火……
于是乎自己硬头皮写了一套……
不多说……
记录如下:
目录:
主程式数小时的成品……
未成体系……
望各位见谅……
(函式、变数的名称沿用 AnyMedia 的……
大伙儿要使用请自个儿改……)
var is_regexp = (window.RegExp) ? true : false;
var anymedia = new Array;
// 所支援的数组,键是语系简写,值是语言包名称
var langs = new Array;
langs['de'] = 'German';
langs['en'] = 'English';
langs['zh-cn'] = 'Simplified_Chinese';
langs['zh'] = 'Traditional_Chinese';
// 语言选单
function langSelect()
{
document.write('
<select onchange="changeLang(this.options[this.selectedIndex].value)"> <optgroup label="Language Chooser"></optgroup> <option value="' + key + '" selected="selected">' + anymedia['language'] + '</option> <option value="' + key + '">' + langs[key] + '</option> </select>');
}
// 获取语言的函式,如果未传值就根据浏览器语系选择
function getLang(lang)
{
if (lang && langs[lang]) {
return langs[lang];
} else {
if (navigator.userLanguage) {
userLang = navigator.userLanguage.toLowerCase();
} else if (navigator.language) {
userLang = navigator.language.toLowerCase();
}
if (userLang && langs[userLang]) {
createCookie('anymedialang', userLang, 365);
return langs[userLang];
} else {
createCookie('anymedialang', 'en', 365);
return langs['en'];
}
}
}
// 获取短语,第一个参数必有,如果有多参数,则从第二个参数开始成为第一个参数的构成短语
function lang()
{
if (!arguments || arguments.length < 1 || !is_regexp) {
return false;
} else if (arguments.length == 1) {
document.write(anymedia[arguments[0]]);
} else if (arguments.length > 1) {
var args = arguments;
var str = anymedia[args[0]];
var re;
for (var i = 1; i < args.length; i++) {
re = new RegExp("%"+i+"\\$s", 'gi');
str = str.replace(re, anymedia[args[i]]);
}
document.write(str);
} else {
return false;
}
}
// 构造短语,第一个参数必有,如果有多参数,则从第二个参数开始成为第一个参数的构成短语
function construct_phrase()
{
if (!arguments || arguments.length < 1 || !is_regexp) {
return false;
}
var args = arguments;
var str = anymedia[args[0]];
var re;
for (var i = 1; i < args.length; i++) {
re = new RegExp("%"+i+"\\$s", 'gi');
str = str.replace(re, anymedia[args[i]]);
}
return str;
}
// 生成链接,本来无甚必要,为了方便则添加了
function add_link(url, str)
{
document.write('<a href="'+anymedia[url]+'" target="_blank">'+anymedia[str]+'</a>');
}
// 设置 Cookie 值
function createCookie(name, value, days)
{
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
// 读取 Cookie 值
function readCookie(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++)
{
var c = ca[i];
while (c.charAt(0) == ' ')
c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0)
return c.substring(nameEQ.length, c.length);
}
return null;
}
// 切换语言
function changeLang(name)
{
createCookie('anymedialang', name, 365);
var url = new String(window.location);
window.location = url;
}
// 读取语言文件
function loadLang(lang)
{
document.write('<sc'+'ript language="javascript" type="text/javascript"></sc'+'ript>');
anymedia['language_id']=lang;
}
目录:
语言包
以下是语言包文件示例:
anymedia['name'] = '沙滩凉鞋';
anymedia['i'] = '我';
anymedia['x_is_x'] = '%1$s是%2$s';
以上定义了三个短语……
如何使用?
请往下看……
目录:
使用方法
现在教你如何使用……
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- Code By Crist Chsu -->
<script src="./langSwither.js" language="javascript" type="text/javascript"></script> <script language="javascript" type="text/javascript"> var cookie = readCookie(\\\'anymedialang\\\'); var title = getLang(cookie); loadLang(title); </script><!-- 生成语言选单 -->
<script>langSelect();</script><!-- 输出短语 -->
<script>lang(\\\'x_is_y\\\', \\\'i\\\', \\\'name\\\');</script>
本例将输出一个语言选单,
还有一段短语 "我是沙滩凉鞋"。
当然啦,
加入你加入英文语言包就可以进行切换了……
我困了……
睡觉去了……
目录:
作者:屈超(Chappell.Wat)
发布时间:May 19, 2006
分类:口胡::一の瀬,数位::六本木,电动::四谷,电影::三鷹
大叔的今周
猛然想起来今天是周末了……
“今周”系列大概有两周没有写了吧……
没别的……
忙……
让我来想想本周发生过什么事……
Emmmmmmm..........
首先是发了一场高烧……
尔后竟错过了今年日语等级考试的报名机会……
另外近来电动业界的消息还蛮多的嘛……
还有电子消费业界同样新品不断……
可能是暑期快到了……
包括电影业界在内的各大烧钱大户们都开始行动了……
发烧事件
先说这次发烧吧……
我想它应该把俺几年来囤积的毒素全消耗掉了……
虽然发作时生不如死……
好在挺了过来……
下次一定打针……
吃药这种家庭治疗太辛苦……
目录
错过 2006 JTEST没想到啊没想到……
今年的日语等级考试居然提前到 4 月报名……
要知道往年至少也得等到 7、8 月吧……
我措手不及……
错过了今年的报名……
痛不欲生……
干脆发烧烧死了算鸟……
郁闷……
目录
电玩界新闻考日语的事只好就这么作罢……
大不了明年直接上一级……
回头看看进来的 PSP 相关消息还真不少……
比如 DaxZISO 0.62 版本发布……
居然可以通过 USB 直接运行 PC 上的游戏……
真让人受不了……
这玩意早点出来的话我当初测试《心跳回忆》也不会那么困难……
哎……
另外 XB360 业已被破……
现在入手可能比较实惠……
我严重怀疑 JS 们会先炒一阵子……
然后 XB360 的价格才会往下走吧……
可惜我对老美的东西不感冒……
(不感冒?那前两天怎么发烧了?)
不买……
没钱……
目录
数位产品新闻令人激动的电子消费品本周有二!
一是 Treo 700p 日前终于发布……
这东西好是好……
太贵……
我只盼望 700 这一出……
Treo 650 能够早日降价……
我就指望入手它了……

当然……
作为头号 Sony 伪非饭……
Sony 最新的 Vaio UX17c 当然不能错过……
直接上图……

个人认为这玩意配置已经超级豪华了……
12988 元不算贵……
但是我等贫民是担负不起的……
只有等来日老外玩腻了买个中古货回来把玩把玩……
算了……
不看了……
看多了眼馋……
目录
《达文西密码》公映说来暑期将近……
大片档也应该开始准备了吧……
《达文西密码》日前已经公映……
对于这部猛片我倒是很乐意到电影院消费一下的……
希望 DVD 不要来得太早……
否则我可能忍不住在 PSP 上直接享受了……
Okay ……
本周任务完成……
下周请继续努力!!!
目录
- 1
- 2
- »