[AS3][开源]拼图游戏。。终于完成。。

2007-8-14 评论(5) 分类:作品 Tags:

puzzle

效果查看:http://cnbang.net/lab/puzzle/index.html

源文件下载:puzzle.zip

上篇说到,拼图游戏做到一半不知道怎么做也不想再做了,但前几天看到一些方法,知道了下一步该怎么做,而最近AS3又不知怎么学了,于是就想把它完成,当作练习。

这个程序写得该是我最简洁的一个(我没说很简洁。。),以前我写的都是乱七八糟的一堆东西,有效果就行了,这次我很注意代码的简洁性了,还加了注释。。前所未有。

附:解决FLASH PLAYER安全性问题:
打开C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player(我计算机用户名为Administrator,记得把隐藏文件夹打开)

用记事本打开这个目录下的FlashPlayerTrust文件夹下的myTrustFiles.cfg文件(没有就创建一个)允许哪个路径下的 SWF文件可以与internet通信的就把路径写上。。最简便的方法当然是把你机器里所有的盘都给他写上…保存关闭。OK了

[AS3]摄像头录制

2007-7-30 评论(1) 分类:作品 Tags:

看了AS2做的摄像头录制程序,挺简单的,就想用AS3做,练习一下,本以为很简单,没想到写了代码后错漏百出,好不容易都改正过来了,结果怎么调录制的图象跟原图象的尺寸都不一样,搞得我都不想再做了。先放上来,高手知道的说下啊~

源文件下载

AS文件代码:

package{
import flash.display.Sprite
import flash.media.Camera
import flash.events.MouseEvent
import flash.display.BitmapData
import flash.events.Event
import flash.media.Video
import flash.display.Bitmap
public class camera extends Sprite{
var mycamera:Camera=Camera.getCamera()
var myvideo:Video=new Video()
var bit:Array
var vwidth=250
var vheight=200
var i:uint=1
var playvideo:Bitmap=new Bitmap()
public function camera (){
myvideo.attachCamera(mycamera)
myvideo.smoothing=true
myvideo.width=vwidth
myvideo.height=vheight
myvideo.x=50
myvideo.y=30
addChild(myvideo)
addChild(playvideo)
}
public function rec_btn(btn){
btn.addEventListener(MouseEvent.MOUSE_DOWN,on_rec_btn)
}
public function play_btn(btn){
btn.addEventListener(MouseEvent.MOUSE_DOWN,on_play_btn)
}
public function stop_btn(btn){
btn.addEventListener(MouseEvent.MOUSE_DOWN,on_stop_btn)
}
public function on_rec_btn(event:MouseEvent){
bit=new Array()
i=1
addEventListener(Event.ENTER_FRAME,onenterframe)
}
public function on_stop_btn(event:MouseEvent){
removeEventListener(Event.ENTER_FRAME,onenterframe)
removeEventListener(Event.ENTER_FRAME,onenterframeplay)

}
public function on_play_btn(event:MouseEvent){
addEventListener(Event.ENTER_FRAME,onenterframeplay)
}
private function onenterframe(event:Event){
var rec:BitmapData=new BitmapData(vwidth,vheight,true,0xff)
rec.draw(myvideo)
bit.push(rec)
}
private function onenterframeplay(event:Event){
if(i<bit.length){
playvideo=new Bitmap(bit[i])
playvideo.x=360
playvideo.y=30
addChild(playvideo)
i++
}else{
removeEventListener(Event.ENTER_FRAME,onenterframeplay)
}

}
}
}

[AS3]输入两边一角画三角形

2007-7-29 评论(0) 分类:作品 Tags:

这几天都在学习AS3,感觉像是从零开始,跟AS2差别很大~经过啃书,大概知道了它的模式,没什么好练习,就上次画三角形的代码写成AS3,不同的是这次是输入两边长和一个角度,似乎这样才能确定一个三角形,输入两个角度的怎么做我还不知道~~~

代码:

package{
import flash.display.Sprite
import flash.events.MouseEvent
import flash.text.TextField
import flash.text.TextFieldType
public class triangle extends Sprite{
private var btnS:Sprite=new Sprite()
private var drawS:Sprite=new Sprite()
var aside:TextField=createtxt(150,350,40,20)
var bside:TextField=createtxt(200,350,40,20)
var angle:TextField=createtxt(250,350,40,20)
var ctrl:TextField=createtxt(350,350,40,20)
public function triangle(){
aside.type=TextFieldType.INPUT
bside.type=TextFieldType.INPUT
angle.type=TextFieldType.INPUT
aside.text=”边长a”
bside.text=”边长b”
angle.text=”ab夹角”
btnS.graphics.beginFill(0x000000)
btnS.graphics.drawRect(300,350,40,20)
btnS.buttonMode=true
btnS.addEventListener(MouseEvent.MOUSE_DOWN,onbtnDown)
addChild(aside)
addChild(bside)
addChild(angle)
addChild(btnS)
addChild(ctrl)
}
private function createtxt (x:Number,y:Number,width:Number,height:Number):TextField{
var result:TextField=new TextField()
result.x=x
result.y=y
result.width=width
result.height=height
result.border=true
addChild(result)
return result
}
private function onbtnDown(event:MouseEvent){
drawS.graphics.clear()
var a=Number(aside.text)
var b=Number(bside.text)
var ag=Number(angle.text)
if(ag<180){
drawS.graphics.lineStyle(1)
drawS.graphics.moveTo(100,50)
drawS.graphics.lineTo(100+a,50)
drawS.graphics.lineTo(100+a-b*Math.cos(ag/180*Math.PI),50+b*Math.sin(ag/180*Math.PI))
drawS.graphics.lineTo(100,50)
addChild(drawS)
}else{
ctrl.text=”error”
}

}
}
}

[AS3]使用stage出错的问题。

2007-7-29 评论(1) 分类:技术文章 Tags:

这两天看AS3 cookbook和AS3的帮助文档,里面很多代码执行后都会出现“TypeError: Error #1009: 无法访问空对象引用的属性或方法。”这个错误。几经周折,才知道解决办法:使用addEventListener( Event.ADDED_TO_STAGE, enterDLHandle ),把要用的stage代码放到enterDLHandle里面,就没问题了。不知道有没有其他解决方法,知道的说声啊~

在经典论坛上提问这个问题,终于有人做出全面回答了,在此感谢zjs35

首先要明白stage是什么意思,stage是显示对象的一个引用舞台的属性,如果显示对象不在显示列表中,即没有用addChild()添加,stage等于null,你的问题就在这里。
使用stage有下面几种方法:
1、文档类的构造函数中可以直接使用stage属性
2、非文档类可以通过参数传递到类里面。
class Test extends Shape
{
function Test(stage:Stage)
{
}
}
3、不想传递参数时,要注意代码的顺序。
class Test extends Shape
{
function Test()
{
}
functon useStage()
{
trace(stage)
}
}
这样使用
var test=new Test()
test.useStage()//null,你的问题出在这里
addChild(test)//添加到显示列表后,就可以使用stage属性。
test.useStage()//[object Stage]
总之,理解stage是显示对象的属性,位于显示列表中的显示对象的stage才引用舞台

输入角度画三角形

2007-7-26 评论(0) 分类:作品 Tags:

时隔两年,最近又有兴趣学习FLASH了,主要当然还是学习AS2、AS3,算是为大学的软件工程做准备吧。今天在论坛上看到有人要一个填度数画三角形的FLASH,就试做了下,粗略地写出来了,但不知如何判断另外两条线的交点….知道的高手们回复说下~~

_root.createEmptyMovieClip(“line_mc”,100)
ok_btn.onRelease=function(){
lineang1=-(ang1/180)*Math.PI
lineang2=(ang2/180)*Math.PI
line_mc.clear()
line_mc.lineStyle(1)
line_mc.moveTo(50,50)
line_mc.lineTo(200,50)
line_mc.beginFill(0xFF99CC);
line_mc.moveTo(200,50)
line_mc.lineTo(200-300*Math.cos(lineang1),50-300*Math.sin(lineang1))
line_mc.moveTo(50,50)
line_mc.lineTo(50+300*Math.cos(lineang2),50+300*Math.sin(lineang2))
line_mc.endFill();
}

FLA源文件

求定积分的FLASH

2006-6-4 评论(0) 分类:作品 Tags:

最近实在无聊,就照课本所写的定积分的求法做了一个求定积分的FLASH,目的在于娱乐,作用一点也没有~~有兴趣的就下载个原文件看看吧~~

源文件下载

[FLASH程序]单摆

2006-4-10 评论(0) 分类:作品 Tags:

最近物理在学单摆,就想在FLASH里做个单摆练习练习,没想到很容易实现,用个COS就行了~~我还是把它复杂化了一点,不过这个单摆有时看起来跟真实
的不像,不知是什么原因,还有做阻尼振动这部分不知怎么做,只能勉强在振幅大的时候实现这个效果~高手有空的话指点一下~

源文件下载

NBA图片程序

2006-3-5 评论(0) 分类:作品 Tags:

NBA图片程序完成了~~因为程序比较容易,所以写代码的时间比较短,很多时间都用在美化和细节上。这次的AS写得很整洁,很清晰,不再像以前那样乱了~~自我感觉很不错~~

或许这个FLASH没什么用,但我在制作的过程中,比玩游戏还感到快乐~比玩游戏还要入迷~~这个程序的价值算是达到了~而且这个程序能帮我电脑里的NBA图片分类,还是有实用价值的。当然我更希望对其他人有用~~

这里提供源文件下载,大家喜欢就下载学习学习吧。。其实也没什么好学习的,里面就四个内容:自定义函数、loadmovie、外部载入XML、数组储存。

源文件下载

图片FLASH

2006-3-1 评论(0) 分类:生活 Tags:

最近在做一个NBA图片库的FLASH程序,跟我之前做的个人网站的相册差不多,一点不同之处就是有分类的搜索。实现起来是比较容易的,但过程中还 是遇到不少麻烦,最大的麻烦是每张图片都要记入XML文件中,而且每个都要写关键字,1000多张图片,想到都懒得做。。先做完程序再说吧~~

对这个BLOG真是有些郁闷。。上上星期我问管理员什么时候能插入FLASH什么的,编辑器能正常,管理员说上星期内解决。但到现在,都没有解决的迹象。。。

很久以前在闪吧发的练习。

2006-2-26 评论(1) 分类:技术文章 Tags:

当时是暑假,对AS很有热情,天天在钻研,当时距接触AS还不到20天的时间,这是我目前为止唯一一次参加练习活动。是初学者才能看啊!!

题目:用圆形公式画特效

内容:用纯AS画如下效果(可以是多边形,只要效果相似就行)

评论:

xx=1
a=550/2
b=400/2
r=100
_root.createEmptyMovieClip(“mc”,1)
with(mc){
moveTo(a+r,b)
lineStyle(1)
}
onEnterFrame=function(){
x=a+Math.cos(xx*Math.PI/180)*r//(PS.我到高二开学才知道为什么用三角函数能画出圆,原来是圆的参数方程~~)
y=b+Math.sin(xx*Math.PI/180)*r
mc.lineTo(x,y)
xx+=123//此处若是xx+=1的话就是典型的画圆~+120是正三角形,让它+123是为了在画三角形的时候有所偏转以至达到效果。
}

其中改一些变量就能改变效果。
为了效果多样,不妨多加几个变量。

xx=1
yy=1

a=550/2
b=400/2
r1=100
r2=100

_root.createEmptyMovieClip(“mc”,1)
with(mc){
moveTo(a+r1,b)
lineStyle(1)
}
onEnterFrame=function(){
x=a+Math.cos(xx*Math.PI/180)*r1
y=b+Math.sin(yy*Math.PI/180)*r2
mc.lineTo(x,y)
xx+=123
yy+=123
r1=Math.sin(xx*Math.PI/180)*100
r2=100

}

改变其中的 xx yy r1 r2就能达到不同的效果:

效果文件已被删~