注意 此贴 为我的边“开荒”边写,因此不保证就是最佳作法,也不免有错误(若是发现我会更新文章)! 正式教程会在后续开始更新html
相信你在看了(第二节)(第三节)以后已经可以知足绝大多数的互动需求了。那么也该谈到制做“自适应”的项目了,(前端换了个说法叫“响应式设计”)前端
咱们仍是先对比下AS3的写法 (若是你未曾用过AS3,那不用理会便可)canvas
AS3: import flash.events.Event; stage.addEventListener(Event.RESIZE,resizeF) function resizeF(e) { trace(stage.stageWidth,stage.stageHeight) }
SWF项目 全部须要“自适应”的 元件都须要咱们放在这个这个函数里以控制他们的坐标。浏览器
CANVAS项目 其实也同样,只是监听resize 换个写法而已函数
CANVAS:
window.addEventListener('resize', resizeCanv); function resizeCanv(e) { console.log('resize') var newWidth = window.innerWidth; newHeight = window.innerHeight; console.log(newWidth,newHeight) }
这段代码,能够写在FLASH CC的任意位置的时间轴(例如根时间轴,MC的时间轴上),不过我确定建议 写在根时间轴的第一帧(固然根据具体项目而定)测试
AS3的同窗,可能不知道 window.innerWidth 这些属性,因此建议去 w3school 看看就行。(这些属性真的只须要记住就好了,或者搜索,例如要获取DIV的相对父级的坐标,DIV相对浏览器窗口(body)的坐标, 一搜一把一把的)动画
好了 都能取到窗口缩放后的 width,height了 那么剩下事就须要你本身去完成了spa
是否是很简单。设计
可是,若是你是一个资深的前端开发者,你习惯了用JQuery,以及一些很是好用的开源库。而且不喜欢在FLASH CC Canvas 里面写交互代码。code
那么你也能够在html中用你熟悉的库来控制 FLASH中的元素。(你仅仅是用FLASH这个IDE来 很是方便 的完成时间轴动画而已)
例如 使用JQuery监听舞台缩放的代码,你能够在HTML中写JS:
var newWidth,newHeight $(window).resize(resizeF); function resizeF() { newWidth=$(window).width(); newHeight=$(window).height(); //控制FLASH中 须要响应的元素 exportRoot.须要控制坐标的元件名.x=1234 }
测试,发布,真不错效果实现了!
可是若是仅仅这样就够了那怎么行!我习惯在FLASH软件中写代码:
首先在你的 页面引入 JQuery ,而后在FLASH CC里面直接使用JQuery! 是的!就是这么爽!
$(window).resize(resizeF); function resizeF() { newWidth=$(window).width(); newHeight=$(window).height(); console.log(newWidth,newHeight) }
至于为何,相信你本身就会明白!这里我就不解释了!
JQuery都能用了,相信其余库你本身也明白怎么用了。!
补充:(虽然是补充,但看了绝对不后悔!——一个“补充”的自白)
差点遗漏了一个"scale"。若是个人项目不须要每一个元件根据显示的宽高来移动坐标,而是单纯的直接将画面放大或缩小。
在HTML中JS中 以及 在FLASH CC JS中 也能够直接这样:(代码仍然能够写在任意位置的时间轴上,是否是真的很方便啊!!!!!)
canvas.style.width=1100+"px"
canvas.style.height=800+"px"
AS3的朋友注意区别 如下代码。(若是不明了,建议先 w3school )
canvas.width=1100
canvas.height=800
AS3若是你使用惯了 greensock,那么你上手他家的JS版 greensock 几乎不费吹灰之力。你甚至能够直接 :
TweenMax.set(canvas,{scale:2,rotation:45})
可能作习惯前端的朋友就有点郁闷了,DIV 的 width:100%,float:left,margin:20%,background-size:"cover" 等等这种用起来很省心的东西在CANVAS里面都用不了。是的你只能一个一个控制他们的坐标。
相信看到这里,有朋友已经发现前面章节FLASH CC CANVAS项目中写的JS 能够像HTML的原生JS那样写法。探索欲望强烈的朋友能够本身先试试。我将在后面的具体案例中使用。