如果舞台是1000的宽度,要剧中比较容易 mc1.x = (1000-400)/2; 这样就居中了,来看原理,首先我们要舞台居中,很容易就想到一个数字 1000/2 结果是500 但是x对舞台的中央是不行的 x是左上角,所以这个答案还要再减去 400/2 相当于mc1再左移自己的一般的位置,这样就完全剧中了,答案就是 1000/2-400/2 那么算式就演化出来了。
所以要居中的答案似乎已经出来了 (stage.stageWidth-mc.width)/2 这个坐标一定是最中间的,但是真的如此吗?如果舞台变了呢?如果mc的大小变了呢?他还居中吗?这样想想依然是的。
我曾经也是非常理想的认为这是最好的方法,但是实践告诉我,我错了,当我需要在mc中继续增加原件图片,并且这个图片也要居中,并且这个图片要在mc内,并且这个图片可能大于mc也可能小于mc。来看看情况是怎么样的。
如果mc2在mc1里,并且mc1大于mc2,很好 mc2.x = (mc1.width-mc2.x)/2; 非常好,很显然他们对得很齐,并且mc1不需要在舞台上移动。但是另一种情况呢?通过这个算法也可以得到他们的坐标,但是这个时候mc1.width已经不在是原来的了,因为mc2的width比它大,所以显然是出错,算出来的结果是0,那么大的图片就会和小的图片”左对齐”了,而更新了舞台上mc1的位置后mc1的位置是居中了,可是里面的却错得一塌糊涂,你又要重新对齐原来的图像,2个文件就要来回对其,麻烦不错,很容易对了这个忘了那个,最终结果就是图像莫名其妙错位,痛苦。曾经思考过很多,图像越多就越麻烦。
这个时候很多程序员并不会跳出来,会一直想如何对其,然后一直修复这个问题,其实错了,我们都错了,解决问题有时候不可以死脑筋,如果换思路会如何?有想过?换过以后却是如此的简单,我们再来看看原理。
首先我们把检测他的大小,然后运算居中,但是大小会变,算了外面不能顾及里面,算了里面不能顾及外面,那能不能不算呢!答案是肯定的。其实无论如何大小变有一个点是永远对着舞台中心的,那就是mc的中心,但是width的大小在变,如何才能让中心不变呢,这时我想到了一个关键字(注册点),在FlashIDE里也许这个名词很熟悉,但是到了代码里可能很难联想到这个关键字,所以我们要做的是让mc的中心点永远是0点就可以了。也就是说00点是中间而不是左上角!这个时候我们再来对齐看看??
mc1.x = stage.stageWidth/2;
mc2.x = -(mc2.width/2);
现在再来看看,无论里里面是大是小,永远直接左移,先把自己的中心确定,然后在把这个中心对到舞台的中心,居中行为最终外美的完成了。当然左对齐右对齐都可以用这个思路,你既然设置是00点的位置,那就先让你的图像和00对齐,再让00去对别的地方,这样迭代就不容易出错了。原来就是如此简单的问题,因为开始的时候就错了,于是越来越麻烦,很多时候问题都是类似的,一定要注意。
flash 居中问题
时间: 2024-10-19 12:53:30
flash 居中问题的相关文章
as3.0 封装一个可垂直居中及左右居中的label,并可以设置其字体样式
下面是封装了一个可设置垂直居中及左右居中的Label,同时可以设置label中的字体样式.代码如下: package myComponent { import flash.display.Shape; import flash.display.Sprite; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextLineMetrics; /** * ... * @author lia
【html】param 以及 embed 的有关 flash 属性详解
本文主要介绍 param 和 embed 标签中有关 flash 的一些属性及其属性值. 首先我们需要知道 param 和 embed 标签是单独出现的,而不是成对出现的,下面的代码是一般 flash 嵌套的代码: <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>flash嵌套</title> <
FLASH动作脚本详解
FLASH动作脚本详解 一.FLASH脚本基础入门讲解 二.按钮AS的编写 三.影片剪辑的AS编写 四.动态文本框 五.影片剪辑的拖拽 六.流程控制与循环语句 七.绘图及颜色的AS的编写 八.声音 AS 的编写与控制 九.时间日期的 AS编写 十.点语法以及路径 十一.深入了解时间控制 十二.无条件转移 十三.变量 十四.运算符(一) 十五.变量(二) 十六.影片剪辑的属性 十七.再讲循环语句 十八.影片剪辑处理函数 十九.复制影片剪辑 二十.深入 startDrag()与 stopDrag()
56张图详细分解Flash CS6中对齐面板的使用
Flash CS6的"对齐面板"用于舞台中对象的对齐.分布.匹配大小.间隔等操作.就是下图这个东东: 它是动画制作过程中用于"排兵布阵"的好帮手.教学中发现学生对"对齐面板"的了解经常是初浅的,只有模模糊糊的一个概念,不能把握其真正的精髓.因此,决定使用比较形象的图来分解这些操作,让学生对把握其精髓,好"排兵布阵".(真是应了一句网络语:不作不死!图解共截了56张图,很辛苦的......) 一.先看操作选项 从上图的"
架设FLASH视频流server心得
什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是仍然走http协议,youtube,土豆等网站就是.那么什么时候才真正须要用到流视频呢? 1)视频文件超过100MB或超过10分钟,用户有seek需求的时候 2)视频文件不须要被下载的时候,rtmp假设不行,能够试试rtmpe 3)视频流须要多台server协同工作的时候,能够用FMS Origin
H5中嵌入flash
<object height="900px" width="100%" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" id="abcdef"> &
转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED是用于windows和 Macintosh平台下的Netscape Navigator浏览器以及Macintosh平台下的IE浏览器.windows平台的IE 利用Activex控件来播放flash而其它的浏览器则 使用Netscape插件技术来播放flash. 下面是简单的网页中插入flash的
网页上插入flash
代码: <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="550" HEIGHT="400" > <PARAM VALUE="
使用 Flash Builder 4 创建基于约束的布局
关于基于约束的布局 基于约束的布局示例 基于约束的布局和绝对定位 使用高级约束布局 设置组件的布局约束 当用户调整应用程序窗口的大小时,可以对组件使用约束来自动调整组件的大小及其在容器中的位置.通常在 MXML 编辑器的设计模式下定义布局约束.还可以在源代码模式下编辑组件的属性来定义布局约束. 关于基于约束的布局 Flex 支持基于约束的布局.基于约束的布局在支持绝对定位的容器中可用.对于 Spark 容器,默认布局 BasicLayout 支持绝对定位.在使用基于约束的布局时,可以将组件的一个