flash 居中问题
如果舞台是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 居中问题的更多相关文章
- Flash AS实现时钟效果(全脚本实现)
最近工作中用到个Flash效果,好久没有写FlashAS脚本了,就想从以前写的代码中找一些实例.竟然看到硬盘中还留有若干年前的代码. 这个时钟效果是全部采用脚本实现,图形也是用脚本绘制的.写于2005 ...
- flash
1. 1.这种方式已经比较旧了, 2. html.push('<div class="flash-ad" style = "position:relative&qu ...
- Flash网站Loading制作
Flash网站Loading制作~~~ stop(); stage.scaleMode=StageScaleMode.NO_SCALE; //指定舞台属性为不跟随播放器大小而改变 stage.show ...
- Html页面插入flash代码
转自:http://www.educity.cn/jianzhan/402117.html 转自:http://www.cnblogs.com/yxc_fj/articles/1390621.html ...
- 页面中插入flash,并且给flash添加单击事件控制播放,以及获取相关参数.
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" hei ...
- html中插入flash代码详解(转载)
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://down ...
- 转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...
- 架设FLASH视频流server心得
什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是 ...
- js判断flash文件是否加载完毕
轮询判断加载进度 img的加载完成有onload方法,一直不知道该怎么判断swf文件是否加载完毕了? 在应用中使用了轮询判断加载进度值PercentLoaded是否达到100,经测试,可以达到效果. ...
随机推荐
- web.config 修改数据库连接
<connectionstrings> </database=数据库名字 ;uid = 登录数据库的名字;Password = 登录数据库的密码;/> </connect ...
- Redis常用命令入门1:字符串类型命令
Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...
- Mindmanager安装
- JAVA基础----java中E,T,?的区别?
http://825635381.iteye.com/blog/2017650 遇到<A>,<B>,<K,V>等,是用到了java中的泛型. 一般使用<T&g ...
- WebView 的使用----android 网络连接处理分析
在Android中,可以有多种方式来实现网络编程: 创建URL,并使用URLConnection/HttpURLConnection 使用HttpClient 使用WebView 创建URL,并使用U ...
- Android中ActionBar的使用
简介 从Android3.0开始(targetSdkVersion或者minSdkVersion为11或者更高),ActionBar被包括在了所有主题为Theme.holo(或者子类)的主题当中. 使 ...
- Eclipse - 修改默认user和类的创建日期
1.找到eclipse.ini文件 2.在文件中找到 -vmargs -Duser.name=xxxxxxxx 3.修改xxxxxxxx为你的名字 4.eclipse中:Window -> Pr ...
- redis清空缓存
进入redis命令行 首先启动redis服务 redis-server /home/redis/redis_7901.conf redis-cli -p 7901(指定进入端口号为7901的redis ...
- 010-Scala单例对象、伴生对象实战详解
010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...
- Java泛型学习笔记 - (二)泛型类
1. 我们先写一个没有泛型的类Box: public class Box { private Object obj; public Box() {} public Object getObj() { ...