Flash 子弹散射
恩,可以先看下Demo,点此查看Demo
这个东西原先是在Blueidea看到一个求助贴来的,修改了下。
下边是子弹散射类:
class BulletShot {
private var i:Number = 0;
public function BulletShot() {
}
public function shot(speedoffsetx:Number, speedoffsety:Number, offsetx:Number, offsety:Number, circletotal:Number) {
/**
speedoffsetx 散射时x方向的速度偏移量;
speedoffsety 散射时y方向的速度偏移量;
offsetx 散射时x方向角度偏移量;
offsety 散射时y方向角度偏移量;
circletotal 一圆周内子弹总个数;
*/
i++;
var _myBullet:MovieClip;
_myBullet = _root.bullet_mc.attachMovie("c", "c"+i, i, {_x:275, _y:200});
_myBullet.xspd = Math.cos(Math.PI*i/circletotal*offsetx);
_myBullet.yspd = Math.sin(Math.PI*i/circletotal*offsety);
_myBullet.onEnterFrame = function() {
this._x += this.xspd*speedoffsetx;
this._y += this.yspd*speedoffsety;
if (this._x<0 || this._x>500 || this._y<0 || this._y>400) {
delete this.onEnterFrame;
removeMovieClip(this);
}
};
}
}
本来想弄成完全面向对象,不过中间的bullet_mc跟attachMovie还真是不知道怎么OOP法……
在Flash里边的AS代码很简单,就不贴咯~
到时候拿来做游戏不错。。。
有关Flash 8 Video Encoder无法启动的问题
由于虚拟主机不提供mp3文件下载,只能把mp3打包进flash里头。
结果打开Flash 8 Video Encoder却提示说:需要DirectShow9和QuickTime6.5以上支持。
于是就下载安装D9跟QT7,结果又提示说Flash 8 Video Encode.msi文件找不到!!
结果只要到处搜资料了,网上有这么一个教程~如下:
Flash 8 Video Encoder 在Flash 8的安装中有带,但运行需要DirectShow9和QuickTime6.5以上支持。实际上装DirectX9就可以了。
DirectX 最终用户运行时,下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=zh-cn
QuickTime v7.1.3下载地址:
http://www.crsky.com/soft/594.html
装完后运行指定Flash 8 Video Encoder.msi的安装路径,用以方法解决:
1.从控制面板增加删除程序项,运用FLASH8的更改 安装程序,点下一步,出现

2.此时不要关闭FLASH8安装程序,因Flash 8 Video Encoder安装会在此时释放,从开始菜单运行Flash 8 Video Encoder,就会自动找得到安装程序了。配置几分钟后。
Flash 8 Video Encoder就可以用了。
恩,的确实可以用了~
Flash 许愿板制作

先给Demo地址:Flash 许愿板
其实老早前就想把这个做好的……由于一些事情耽搁了~
有别于原来做的Flash留言板,这里使用了PHP输出XML来给Flash提供数据,而当时Flash留言板使用Loadandsend方法来做的~
恩,直接步入正题。
其实代码蛮简单的,主代码如下:
2003Server下IIS需要用户名密码验证的问题
昨天在服务器上升级了下Discuz!在安装Ucenter的时候修改了网站的匿名访问用户名,结果。。。
每次登陆网站都会出现用户名密码验证,昨天下午弄了整个下午,完全没有头绪,网上说的增加Everyone和匿名用户啊,
设置匿名访问呢啊,删掉网站虚拟目录重新建立啊,都试过了,就差删掉IIS重建了……
今天早上Google的时候忽然发现个帖子,有点对头,说可能是网站匿名访问的用户名跟密码不对造成的。
想想昨天使用的用户名都没让输入密码,会不会是这个原因?
登录到服务器,把帐号密码换成远程登录的密码,哈,OK了~
Flash+Xml伪分页显示
原来以为Flash+Xml的分页很麻烦,今天看了下,发现实现方法其实蛮简单的,在Xml载入数据之后,把需要显示的数据显示出来就行了。
之所以说是伪分页,那是因为一开始就载入了所有的内容,只不过显示了特定节点间的内容而已。
点此查看效果
功能代码如下:
import mx.transitions.Tween;
import mx.transitions.easing.*;
//定义数组用于放置xml数据
var myarray:Array = [];
//加载xml
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.load("xmlpages.xml");
myxml.onLoad = function(s) {
if (s) {
//读取xml时执行函数
initXml(myxml, myarray, 0, PAGE_NUM);
} else {
trace("cant connect xml");
}
};
//定义总页数
var pages:Number;
//定义每页显示数目
var PAGE_NUM:Number = 15;
function initXml(xml, array, nstart, nend) {
root = xml.firstChild;
len = root.childNodes.length;
if (nend>len) {
nend = len;
}
//计算总的页数
pages = Math.ceil(len/PAGE_NUM);
//建立个容器放置加载的内容
this.createEmptyMovieClip("main_mc", 1);
main_mc.setMask(mask_mc);
mask_mc._width = 150;
mask_mc._height = 300;
//建立个容器防止页数
this.createEmptyMovieClip("page_mc", 2);
//定义一个变量来设置y的位置
var k = 0;
for (var i = nstart; i0) {
for (var j = 0; j<=pages; i++) {
var button = page_mc["page_mc"+i];
if (i != id) {
button.gotoAndStop(1);
button.enabled = 1;
} else {
button.gotoAndStop(2);
button.enabled = 0;
}
}
}
Supesite 后台报错“参数错误,请指定正确的系统类型”解决办法
在弄Supesite首页数据输出的时候碰到的一个问题,后来“个人空间管理”里,点了“分类管理”中的几个分类,都报“参数错误,请指定正确的系统类型”的错!
Google了下,发现原来是“功能频道”设置里没有启用专题的关系。
启用该专题后,就没问题了……唉,这个提示也太离谱了,写“请先在功能频道里启用该专题!”不就好了?
Discuz!验证码总是错误
前天在服务器上把客户的Discuz!打包down了回来,在本地测试升级。
升完级发现注册部分的验证码不管怎么输都是显示验证码错误!但是网上的那份却是好的。
猜测是升级的问题,于是又从6.1弄回到6.0版本。结果发现还是错的……
在Discuz!官方论坛找了半天资料,差不多都是升级后才发生的此类问题,要不就是因为更改了config.inc.php文件导致的。
接着……也不知道是在哪个搜索引擎搜到的资料,说是因为不是通过原域名访问的原因。
于是又尝试用127.0.0.1访问……依然不行!
再之后,尝试着修改了一下$cookiedomain,改掉了里边原来的网站域名之后,验证码就正常了……
例:设置$cookiedomain=‘.127.0.0.1’~
Drupal常用API函数介绍 字符串截取函数truncate_utf8()
使用格式truncate_utf8($string, $len, $wordsafe = FALSE);
各参数介绍:
$string 想被截段的字符串。
$len 函数执行后返回字符串的长度上限。
$wordsafe 标志符。TRUE表示在最近的空格处截断并返回;FALSE则不。drupal的API参考指名默认FALSE。
返回值就是截取下来的字符串,在想用的地方打印即可。
不过用了感觉中文截取时的长度不太对,一个汉字是按照4个长度来算,而字符则是1个长度……
下边是函数体:
function truncate_utf8($string, $len, $wordsafe = FALSE) {
$slen = strlen($string);
if ($slen < = $len) {
return $string;
}
if ($wordsafe) {
while (($string[--$len] != ' ') && ($len > 0)) {};
}
if ((ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
return substr($string, 0, $len);
}
while (ord($string[--$len]) < 0xC0) {};
return substr($string, 0, $len);
}
Drupal 不使用View输出页面内容
View模块功能是很强大,可以完全不用写代码来达到输出指定的内容,但是呢,由View输出的页面代码会有无数多的DIV,如果对CSS不熟悉,但是页面设计的要求又很高的话,那简直就是噩梦。这里讲一下不使用View,而使用Drupal的API来输出内容的方法,一来呢,方便Design,二来,获得的数据自己也比较容易控制。
来段数据库操作代码:
< ?php
echo "标题";//标题
$result = pager_query("SELECT n.nid, n.title FROM {node} n WHERE n.type = 'story' ORDER BY n.created DESC", 15);//复杂的内容可能需要多表连接,db_query是不带分页参数的查询,pager_query则是带分页的查询
if (db_num_rows($result) > 0) {
while ($test = db_fetch_object($result)) {
echo l($test->;title,'node/'.$test->;nid);
};
}else {
echo "木有内容";
}
echo "<div>".theme('pager', NULL, 15)."</div>";
?>
下午在做的时候发现这块内容丢到Block里边的话……分页函数就会出问题……感觉有点莫名啊……
直接放在一个页面里就正常了,theme()函数难道在引用区块后无效?
Drupal模板页node.tpl.php/样式定制
node.tpl.php,恩,就是它了~node页内的参数主要由node自身的参数数量来决定。
看node具体参数可以使用< ?php print_r($node);?>来查看~
通常会看到类似下边的代码:
stdClass Object
(
[nid] => 39
[vid] => 39
[type] => webform
[status] => 1
[created] => 1216881872
[changed] => 1217937211
[comment] => 0
[promote] => 1
[sticky] => 0
[revision_timestamp] => 1217937211
[title] => 用户调查表
[body] => 网站调查
[teaser] => 网站调查
[log] =>
[format] => 1
[uid] => 1
[name] => admin
[picture] =>
[data] => a:0:{}
[webform] => Array
(
[nid] => 39
[confirmation] => 感谢您的参与~
[teaser] => 0
[submit_text] =>
[submit_limit] => -1
.............
接着参考其中的数组内容提取自己需要的内容就行咯,比如节点标题:
< ?php echo $node->title;?>
个人觉得node.tpl.php是所有模板文件里最容易定制样式的一个文件~
Drupal 模块webform介绍及建议
webform模块是用于意见反馈用的一个模块,具体设置相对来说比较简单,安装模块后看说明一步步设置要填写的字段即可。
最近一直做的工作中有用到用户信息反馈,用Drupal弄了老半天……
发现如果用webform自己生成的form,那么css方面的压力就很重。
如果页面代码完全由designer写的话,套用webform的办法却是有的。
< ?php
$form['submitted']['fluentin'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="vol-fluentin">',
'#suffix' => '</div>',
'#weight' => -1,
);
$form['submitted']['otherlang'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="vol-otherlang">',
'#suffix' => '</div>',
'#weight' => 0,
);
// Move the form field labeled "whatever" to the new fieldset
// $form['submitted']['newfieldset']['whatever'] = $form['submitted']['whatever'];
$form['submitted']['fluentin']['Fluent in'] = $form['submitted']['Fluent in'];
unset($form['submitted']['Fluent in']);
$form['submitted']['otherlang']['Please specify other languages'] = $form['submitted']['Please specify other languages'];
unset($form['submitted']['Please specify other languages']);
echo form_render($form);
?>
使用这个方法的话,就产生另一个问题。
只能把系统生成的东西包到html代码里……没得实质性的改变嘛!
所以……对于复杂的表单……个人希望别使用drupal,自己写html,操作数据库比较方便=。=