查看: 1077|回复: 22
|
帮帮忙。。FLASH高手。
[复制链接]
|
|
发表于 5-12-2005 04:03 PM
|
显示全部楼层
用Array定義map,如
line[0] = [1,1,1,1,1,1,1];
line[1] = [1,0,0,0,0,0,1];
line[2] = [0,0,1,0,1,0,0];
line[3] = [1,0,1,0,1,0,1];
line[4] = [1,0,0,0,1,0,1];
line[5] = [1,1,1,1,1,1,1]; |
|
|
|
|
|
|
|
楼主 |
发表于 6-12-2005 04:07 PM
|
显示全部楼层
原帖由 super-tomato 于 5-12-2005 04:03 PM 发表
用Array定義map,如
line[0] = [1,1,1,1,1,1,1];
line[1] = [1,0,0,0,0,0,1];
line[2] = [0,0,1,0,1,0,0];
line[3] = [1,0,1,0,1,0,1];
line[4] = [1,0,0,0,1,0,1];
line[5] = [1,1,1,1,1,1,1];
对不起。。。我不是很明白。。
可以讲解一下吗??
我想要容易明白一点的。。。麻烦你
谢谢。。 |
|
|
|
|
|
|
|
发表于 7-12-2005 03:19 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 7-12-2005 03:38 AM
|
显示全部楼层
好厉害哦。。再请问一下要怎样把design好的flash post into internet ...
有什么server is free one ??就要好像你给的这样。。。
谢谢。。
|
|
|
|
|
|
|
|
楼主 |
发表于 12-12-2005 03:24 PM
|
显示全部楼层
super tomato ...
可以send给我你example 的source code 吗??
因为我不懂要怎么使用。。。
我很想要学。。
谢谢。。。 |
|
|
|
|
|
|
|
发表于 14-12-2005 10:42 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 17-12-2005 10:30 PM
|
显示全部楼层
没有人可以告诉我怎样使用array 吗??
我很急需要学这个。。。请教我怎样使用array来build maze ...
thanks... |
|
|
|
|
|
|
|
楼主 |
发表于 17-12-2005 10:38 PM
|
显示全部楼层
还有怎样放置所需要的图片在那个数组的array 里??好难啊。。
我都想不到。。!!!
救命啊。。。 |
|
|
|
|
|
|
|
发表于 18-12-2005 11:42 PM
|
显示全部楼层
可以使用attachMovie, loadMovie |
|
|
|
|
|
|
|
楼主 |
发表于 19-12-2005 11:00 PM
|
显示全部楼层
我使用了array来定义我的map..
方法如下:
line = new Array();
line = [[0,1,1,0],
[0,0,0,0],
[0,0,1,0],
[1,0,0,0]];
arraylength = 4;
for (i = 0;i<arraylength;i++)
{
for (j = 0;j<arraylength;j++)
{
if (line[ i ][j] !=0)
{
“问题“?
}
}
}
我想在“问题“那里,当它不是0的时候,就会出现一个四方格,要用action script来表现的。。
请问该怎样做??
[ 本帖最后由 yong2212 于 20-12-2005 07:31 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 20-12-2005 07:33 PM
|
显示全部楼层
原帖由 super-tomato 于 18-12-2005 11:42 PM 发表
可以使用attachMovie, loadMovie
我试了attachMovie 和 loadMovie 都不行。。应该怎样加入呢?? |
|
|
|
|
|
|
|
发表于 20-12-2005 08:19 PM
|
显示全部楼层
attachMovie 语法为
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
id 就是 Library 的 linkage Identifier
name 就是名字咯,不过在场景上必须是独一的
depth 是物深,也必须是独一
initObject:Object 一般省略
想来你应该还没有建立 linkage 吧?
建议先了解 Flash 的架构和用法,不要一开始就想做游戏。 |
|
|
|
|
|
|
|
楼主 |
发表于 20-12-2005 11:10 PM
|
显示全部楼层
原帖由 sson 于 20-12-2005 08:19 PM 发表
attachMovie 语法为
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
id 就是 Lib ...
我使用..
line = new Array();
line = [[1,0,1,1,1,1,1,1,1,1],
[1,0,1,0,0,0,0,0,0,1],
[1,0,1,0,1,0,1,1,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,0,0,0,0,0,0,1,0,1],
[1,0,1,0,1,1,1,1,0,1],
[1,0,1,0,0,0,1,1,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,0,0,0,1,0,1,1,0,0],
[1,1,1,1,1,1,1,1,1,1]];
arraylength = 10;
for (x = 0;x<arraylength;x++)
{
for (y = 0;y<arraylength;y++)
{
if (line[x][y] !=0)
{
_root.attachMovie("square","try",1);
}
}
}
"square" is my movieclip linkage name, "try" is a new name,actually i dont really understand wat is the depth ..but i try to put one ..
result only display a square..
对不起..我只是不知道要从何学起..而且我想要用这个来做我的assignment.
我有参考其他flash..但也在学习中..
[ 本帖最后由 yong2212 于 20-12-2005 11:13 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 20-12-2005 11:17 PM
|
显示全部楼层
我自己用了一下方法 :
line = new Array();
line = [[1,0,1,1,1,1,1,1,1,1],
[1,0,1,0,0,0,0,0,0,1],
[1,0,1,0,1,0,1,1,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,0,0,0,0,0,0,1,0,1],
[1,0,1,0,1,1,1,1,0,1],
[1,0,1,0,0,0,1,1,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,0,0,0,1,0,1,1,0,0],
[1,1,1,1,1,1,1,1,1,1]];
arraylength = 10;
for (x = 0;x<arraylength;x++)
{
for (y = 0;y<arraylength;y++)
{
if (line[x][y] !=0)
{
_root.lineStyle(2,0x0000FF,50);
_root.moveTo(y*20,x*20);
_root.lineTo(y*20+20,x*20);
_root.moveTo(y*20,x*20);
_root.lineTo(y*20,x*20+20);
_root.moveTo(y*20,x*20+20);
_root.lineTo((y*20)+20,(x*20)+20);
_root.moveTo((y*20)+20,x*20);
_root.lineTo((y*20)+20,(x*20)+20);
}
}
}
maze 是出来了..不知这样的方法可以吗??
请大家指点..!!谢谢 |
|
|
|
|
|
|
|
发表于 21-12-2005 12:06 AM
|
显示全部楼层
当然也行,帮你改了些许
var size:Number = 20; // 设置格子的大小
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10); // 建立一个固定场景,方便日后控制等用途
// 绘制方式
function drawbox(x, y) {
x = x * size
y = y * size
surface.beginFill(0xCC0000)
surface.moveTo(x, y)
surface.lineTo(x + size, y)
surface.lineTo(x + size, y + size)
surface.lineTo(x, y + size)
surface.lineTo(x, y)
surface.endFill()
}
// 贴库方式
function attach(x, y) {
var depth:Number = surface.getNextHighestDepth()
// box 是 linkage identifier
var box:MovieClip = surface.attachMovie("box", "b" + depth, depth)
box._x = x * size
box._y = y * size
}
line = new Array()
line = //不变....
for (y = 0; y < line.length; y++) {
for (x = 0; x < line[y].length; x++) {
if (line[y][x] != 0) {
// 取择任何一个
drawbox(x, y)
//attach(x,y)
}
}
} |
|
|
|
|
|
|
|
楼主 |
发表于 21-12-2005 12:58 AM
|
显示全部楼层
原帖由 sson 于 21-12-2005 12:06 AM 发表
当然也行,帮你改了些许
这真是我想要的!! 但一只做不出...
但我还是有问题..
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
到底这个该怎样解释??
"_maze_" is a instancename, but what is this use for ??
and can tell me more clearly about "depth", i still douth about this.
function attach(x, y) {
var depth:Number = surface.getNextHighestDepth()
// box 是 linkage identifier
var box:MovieClip = surface.attachMovie("box", "b" + depth, depth)
box._x = x * size
box._y = y * size
}
var depth:Number = surface.getNextHighestDepth() <--到底有什么用??
为什么 是"b" + depth, depth, 而不是"b",depth,depth
box._x = x * size
box._y = y * size
_x and _y该何时使用???underscore 该怎样用??
谢谢.. |
|
|
|
|
|
|
|
发表于 21-12-2005 01:34 PM
|
显示全部楼层
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
没错 "__maze__" 是 instance name,就如上面的注解:建立一个固定场景,方便日后控制等用途
如果全部放到 _root 也是可以,不过日后如果要增强等就可能比较不方便控制,
这只是小章鱼惯用的一种技巧,当然可以有其它的方式。
depth 是物深,就是一般理解的 z-order ,数值越高表示物件越在上面。
Flash 中,在一个场景内(instance/MovieClip)每一个物的深和名必须是独一的,
否则新建立的物将取代旧的同名或深的物件。
var depth:Number = surface.getNextHighestDepth() <--到底有什么用??
surface.getNextHighestDepth() 就是取该场景(instance/movieclip 在这里就是取 surface -> __maze__ 的)的下一个(最高)可用的物深。
surface 是一个指向 _root.__maze__ 的指针(pointer)。
为什么 是"b" + depth, depth, 而不是"b",depth,depth
box._x = x * size
box._y = y * size
_x and _y该何时使用???underscore 该怎样用??
为什么不是"b",depth,depth?看看上回说的 attachMovie 的用法吧
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
第一个:id
第二个:name
第三个:depth
第四个:initObject (这是可省略的值)
surface.attachMovie("box", "b" + depth, depth) 里的:
"box" 是库标识(linkage identifier) 也就是 id 项
"b" + depth 是 name 项
"b" 是指定新建名,不过由于名必须是独一的,所以加上物深来命名,
就形成了 b1,b2,b3 等如此类推。
box._x = x * size 的 box 是 MovieClip 的类,也就是场景上的物件
_x, _y 是 MovieClip 的属性(properties),这和下画线(underscore)没有关系
这个些问题已经不是 Flash 的范围了,而是编程了解的范围 |
|
|
|
|
|
|
|
楼主 |
发表于 21-12-2005 02:44 PM
|
显示全部楼层
原帖由 sson 于 21-12-2005 01:34 PM 发表
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
没错 ...
谢谢小章鱼。。。
有问题在发问。。
|
|
|
|
|
|
|
|
楼主 |
发表于 22-12-2005 07:21 PM
|
显示全部楼层
请问这个有什么问题。。不能auto solve ??
var size:Number=20;
var surface:MovieClip = this.createEmptyMovieClip("maze",1);
surface._x = 100;
surface._y = 100;
var mazewall:MovieClip = surface.createEmptyMovieClip("wall",2);
//attachmovie function
function attach(id,x,y)
{
var depth:Number = mazewall.getNextHighestDepth();
var box:MovieClip = mazewall.attachMovie(id,"b" + depth,depth);
box._x = x * size;
box._y = y * size;
}
//use to look current position
textArea1 = " ";
textArea2 = " ";
var a:Number=0;
//auto-solve funtion by DFS
function autosolve(y,x)
{
textArea1 = textArea1 + "y,x("+y +","+x+")"+"\n";
if(line[x][y] == 3)
{
textArea1 = textArea1 + "complete" + " ";
stop();
}
if(line[x+1][y] != 0) /* hit the wall */
{
textArea1 = textArea1 + a +") Dead Road X,Y=("+ x +","+ y + ")\n";
a = a +1;
return;
}
else /*if not hit wall*/
{
textArea1 = textArea1 + a+") Go Down X,Y=(" + x +","+ y +") \n";
a = a + 1;
autosolve(x+1,y);
}
if(line[x][y+1]!=0) /*hit the wall*/
{
textArea2 = textArea2 + a +")Hit Wall, return X,Y=(" + x +","+ y +") \n";
a = a+1;
return;
}
else /* got road*/
{
textArea2 = textArea2 + a +")Go right X,Y=(" + x +","+ y +") \n";
a = a+1;
autosolve(x,y+1);
}
}
line = new Array();
line = [[1,2,1,1],
[1,0,0,1],
[1,1,0,1],
[1,0,0,3],
[1,1,1,1]];
//create wall,startpoint,endpoint and player
for (y=0;y<line.length;y++){
for (x=0;x<line[y].length;x++){
switch(line[y][x])
{
case 0:
break;
case 1:
//create walls
attach("box",x,y);
break;
case 2:
//create startpoint and player
attach("startpoint",x,y);
var p:MovieClip = surface.attachMovie("player","player2",surface.getNextHighestDepth());
p._x = x*size;
p._y = y*size;
break;
case 3:
//create endpoint
attach("endpoint",x,y);
break;
}
}
}
autosolve(1,0); |
|
|
|
|
|
|
| |
本周最热论坛帖子
|