- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EaselJS 并希望向后兼容 ExplorerCanvas。
这应该可以使用以下代码(参见 here):
createjs.createCanvas = function () { ... return canvas implementation here ... }
但是,如果我在此函数中发出警报并运行代码,则该函数永远不会运行。
我该如何让它发挥作用?
编辑:
这是我使用的代码的简化示例:
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<script src='/Scripts/jquery-1.7.1.js'></script>
<script src="/Scripts/excanvas/excanvas.compiled.js"></script>
<script src="/Scripts/easeljs/lib/easeljs-0.5.0.min.js"></script>
<script src='/Scripts/core/jquery.mousewheel.js'></script>
<style>
canvas
{
border: 1px solid #ccc;
}
</style>
<script type='text/javascript'>
$(document).ready(function () {
// Variables
var img;
var stage;
var bmp;
// Bindings
$('#load').click(function () { initialize() }); // DELETE
// Functions
function initialize() {
img = new Image();
img.onload = imageLoadedEvent;
img.src = '/Scripts/viewer/June.jpg';
}
function imageLoadedEvent() {
var canvasElement = generateContext('testCanvas', 400, 400);
stage = new createjs.Stage('testCanvas');
bmp = new createjs.Bitmap(img);
stage.autoClear = true;
stage.addChild(bmp);
stage.update();
}
function generateContext(canvasID, width, height) {
var canvasElement = document.createElement('canvas');
if (typeof (G_vmlCanvasManager) != 'undefined')
canvasElement = G_vmlCanvasManager.initElement(canvasElement);
canvasElement.setAttribute("width", width);
canvasElement.setAttribute("height", height);
canvasElement.setAttribute("id", canvasID);
document.getElementById('viewer').appendChild(canvasElement);
}
});
</script>
</head>
<body>
<div id='viewer'>
<button id='load'>load</button>
</div>
</body>
</html>
此示例将在 Chrome 和 IE9 中运行,因为会创建和使用 native Canvas 元素。但是在 IE8 中它失败了。
最佳答案
我也遇到过这个问题,试图让 ExCanvas 与 EaselJS 配合得很好。这是我如何让它工作的。希望这有助于解决您的形象问题。
如果操作正确,您应该会在 IE 中看到一个 700 x 700 的 Canvas ,从左上角到右下角有一条红线(在 8 中测试过)。
头>
<!--
Load ExCanvas first, and jquery
-->
<script type='text/javascript' src='./javascript/excanvas.js'></script>
<script type='text/javascript' src='./javascript/jquery-1.8.2.min.js'></script>
<!--
Have to load Easel js files in a certain order, and override the createCanvas
function in order for it to work in < IE9.
-->
<script type='text/javascript' src='./javascript/easel/UID.js'></script>
<script type='text/javascript' src='./javascript/easel/Ticker.js'></script>
<script type='text/javascript' src='./javascript/easel/EventDispatcher.js'></script>
<script type='text/javascript' src='./javascript/easel/MouseEvent.js'></script>
<script type='text/javascript' src='./javascript/easel/Matrix2D.js'></script>
<script type='text/javascript' src='./javascript/easel/Point.js'></script>
<script type='text/javascript' src='./javascript/easel/Rectangle.js'></script>
<script type='text/javascript' src='./javascript/easel/Shadow.js'></script>
<script type='text/javascript' src='./javascript/easel/SpriteSheet.js'></script>
<script type='text/javascript'>
var canvas, stage;
createjs.createCanvas = function () { return getCanvas(); };
function getCanvas() {
// This is needed, otherwise it will keep adding canvases, but it only use the last one it creates.
canvas = document.getElementById("myCanvas");
if (canvas != null) {
document.getElementById("container").removeChild(canvas);
}
canvas = document.createElement("canvas");
document.getElementById("container").appendChild(canvas);
if (typeof (G_vmlCanvasManager) != 'undefined') {
canvas = G_vmlCanvasManager.initElement(canvas);
canvas.setAttribute("height", "700");
canvas.setAttribute("width", "700");
canvas.setAttribute("style", "height:700px; width:700px;");
canvas.setAttribute("id", "myCanvas");
}
return canvas;
}
</script>
<script type="text/javascript">
$(document).ready(function () {
loadOtherScripts();
stage = new createjs.Stage(canvas);
// Draw a red line from top left to bottom right
var line = new createjs.Shape();
line.graphics.clear();
line.graphics.setStrokeStyle(2);
line.graphics.beginStroke("#FF0000");
line.graphics.moveTo(0, 0);
line.graphics.lineTo(700, 700);
stage.addChild(line);
stage.update();
});
function loadOtherScripts() {
var jsAr = new Array(13);
jsAr[0] = './javascript/easel/Graphics.js';
jsAr[1] = './javascript/easel/DisplayObject.js';
jsAr[2] = './javascript/easel/Container.js';
jsAr[3] = './javascript/easel/Stage.js';
jsAr[4] = './javascript/easel/Bitmap.js';
jsAr[5] = './javascript/easel/BitmapAnimation.js';
jsAr[6] = './javascript/easel/Shape.js';
jsAr[7] = './javascript/easel/Text.js';
jsAr[8] = './javascript/easel/SpriteSheetUtils.js';
jsAr[9] = './javascript/easel/SpriteSheetBuilder.js';
jsAr[10] = './javascript/easel/DOMElement.js';
jsAr[11] = './javascript/easel/Filter.js';
jsAr[12] = './javascript/easel/Touch.js';
for (var i = 0; i < jsAr.length; i++) {
var js = jsAr[i];
$.ajax({
async: false,
type: "GET",
url: js,
data: null,
dataType: 'script'
});
}
}
</head>
<body>
<div id="container"></div>
</body>
</html>
关于javascript - 使 IE8 与 EaselJS 和 ExplorerCanvas 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724404/
我正在尝试水平翻转 SpriteSheet 动画中的 Sprite 。我从this example开始 我在创建SpriteSheet后立即添加了翻转的帧 var ss = new creat
我正在尝试水平翻转 SpriteSheet 动画中的 Sprite 。我从 this example 开始 我在创建 SpriteSheet 后立即添加了翻转帧 var ss = new cr
是否可以使透明rect可点击? 我不想填充它,所以看起来像 shape.graphics.setStrokeStyle(2).beginStroke("#000").rect(0, 0, 1
如何在createJS中绘制圆弧。我已经经历过 arcTo 函数,但这不是我想要的。我希望能够绘制几条弧线,这些弧线放在一起时类似于一个圆。例如:我希望能够使用 8 条弧线绘制一个圆。无法使用 Arc
当我尝试使用时: temp = new createjs.Bitmap(obj.path) 我收到错误: Uncaught An error has occurred. This is most li
我正在用 EaselJS 制作一个旋转矩形,但它不像我想的那样工作。 我认为,如果我想制作一个围绕其中心在 x=100, y=100 位置旋转的正方形 (40x40),我需要将它的注册点设置为 reg
我在使用 EaselJS 时遇到了困难。基本上我想创建一个简单的网格并突出显示所选的实际元素: var stageWidth = 800, stageHeight = 600, cell_
我最近发现了EaselJS,我正在尝试制作一个非常简单的 Canvas 射击游戏。 我的 Canvas 宽度为 500 像素,高度为 500 像素。 当用户的鼠标进入 Canvas 时,目标会随着鼠标
我正在使用 EaselJS SpriteSheets,我想知道如何让我的英雄停止平稳运行,因此,如果 SpriteSheet 正在播放“运行”动画并且位于第 5 帧,我需要通过帧进行动画处理6, 7,
我的形状要么从地板上掉下来,要么消失。我的代码很简单,如果您复制并粘贴,您就可以看到所有内容。无论如何,听到的是代码。我想我可能没有在tick函数中的碰撞中添加一些东西。 var box, gravi
EaselJS.js 库有很多我的项目中不需要的函数(我不调用它们)。有没有办法检测这些功能并为每个项目删除它们?我需要尽可能减小文件大小。 附注我的easeljs.js是在Adobe Flash C
我正在尝试提高 Canvas 上的性能,因为每个 stage.update() 上都会重新绘制所有内容(多个区域),这就是它的工作原理。我只想绘制/添加一个区域。我可以让它工作,但是由于更新,所有以前
我正在使用 EaselJS 用 JS 编写一个简单的游戏。我尝试保持一切面向对象,以保持游戏状态、EaselJS 对象状态以及 Canvas 上显示的内容同步。我希望能够通过更改属性来更改 Canva
我希望我的位图转到单击位置,但我希望看到 bitmap.x/bitmap.y 和 click.x/click.y 之间的进展我怎样才能制作这个动画? 非常感谢 最佳答案 单击舞台时,您可以使用 Twe
我需要使用 Shape 对象创建可拖动的随机矩形。此函数在单击鼠标的位置创建新的矩形。 var rects = []; var i=0; var stage; window.onload = func
在代码的开头,我设置了一个刻度事件。以下 3 行有效。 createjs.Ticker.addEventListener("tick", handleTick); createjs.Ticker.us
我正在尝试在 Canvas 中创建可拖动的背景图像。目前我有这样的东西: var stage = new createjs.Stage("canvas"); createjs.Ticker.addEv
所以我正在使用 easeljs,并且我有一堆要回收的图像。由于某种原因,每当我尝试将它们添加到舞台 stage.update() 就不再起作用。 (我使用警报来测试这一点,因此它可能会变得非常慢例如加
我刚开始使用 easeljs 库。我创建了一个带舞台的 Canvas ,它可以正常工作。 我想添加位图作为按钮并将它们并排添加到舞台底部。 我试过以下方法,但它会将位图放在彼此的顶部。 var but
我刚开始通过在线教程学习 javascript,并从 GitHub 存储库下载文件。文件类型为“easeljs-0.7.1.min”。当我输入下面给出的代码时,它没有显示任何内容在浏览器上。是我下载的
我是一名优秀的程序员,十分优秀!