关于跨域的解决办法
很多人用createjs都会出现跨域问题,我这边统一回答一下。
Uncaught An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.
上面这个问题,如果你是双击文件运行报出的(只要地址前缀file:开头的都算),你只需要在环境中打开就可以,比如animateCC你可以选择用ctrl+enter打开,一些前端IDE自带环境的可以直接在IDE里用浏览器打开,什么都没有,你可以选择放到服务器上看。如果在服务器环境上也报这个问题,特别是点击的时候报的问题,你可以这么设置图片:
var hitArea = new createjs.Shape();
hitArea.graphics.beginFill("#000").drawRect(0,0,92,92);//这里是图片大小
bitmap.hitArea = hitArea;
凡是点击出的跨域问题上面的方法都能解决。
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
这个问题也是同样的,如果你是双击文件直接打开的(只要地址前缀file:开头的都算),放到环境中就好了,如果还没好,让后台设置一下跨域,后台怎么设置跨域?这个你得问你们公司的后端程序员。
No 'Access-Control-Allow-Origin' header is present on the requested resource. Originis therefore not allowed access
Access to XMLHttpRequest at 'file:xxxxx' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
这2个错误只要你放弃使用xhr模式加载,也就是new createjs.LoadQueue(false);括号里面的参数传false就行了,如果一定要用xhr模式加载,那就只能需要服务器允许才可以跨域的,也就是需要你们后端设置。
但是声音加载默认就是需要用XHR,用an做项目的人很多都需要本地打开,那么这个坑必踩,解决办法:
createjs.Sound.registerPlugins([createjs.HTMLAudioPlugin]);//切换播放插件 loader.installPlugin(createjs.Sound);//如果是an这句是默认导出的
An error has occurred. This is most likely due to security restrictions on WebGL images with local or cross-domain origins
这个跨域很明显就是使用了stagegl跨的域,使用stagegl渲染非本地图片必须得到跨域允许,也就是还是需要后端设置。
其他的跨域
其他的跨域只要不是https跨域,和点击图片跨域,都可以让后台设置解决,后台解决不了就是你们公司后端的问题。
匿名
hitArea.graphics.beginFill("#000").drawRect(0,0,92,92);//这里是图片大小
bitmap.hitArea = hitArea;
可以的,可以解决精灵图无法点击触发事件的问题
匿名
你是要饭的吗
匿名
全废话