Stage constructor
Stage(
- CanvasElement canvas, {
- int? width,
- int? height,
- StageOptions? options,
Implementation
Stage(CanvasElement canvas,
{int? width, int? height, StageOptions? options}) {
if (canvas.tabIndex! <= 0) canvas.tabIndex = 1;
if (canvas.style.outline == '') canvas.style.outline = 'none';
options ??= Stage.defaultOptions;
width ??= canvas.width!;
height ??= canvas.height!;
backgroundColor = options.backgroundColor;
preventDefaultOnTouch = options.preventDefaultOnTouch;
preventDefaultOnMouse = options.preventDefaultOnMouse;
preventDefaultOnWheel = options.preventDefaultOnWheel;
preventDefaultOnKeyboard = options.preventDefaultOnKeyboard;
_canvas = canvas;
_stageAlign = options.stageAlign;
_stageScaleMode = options.stageScaleMode;
renderMode = options.stageRenderMode;
_inputEventMode = options.inputEventMode;
_sourceWidth = width;
_sourceHeight = height;
_pixelRatio = min(options.maxPixelRatio, env.devicePixelRatio);
_renderContext = _createRenderContext(canvas, options);
_renderState = RenderState(_renderContext);
_console = StageConsole()..visible = false;
print('StageXL render engine : ${_renderContext.renderEngine}');
canvas.onKeyDown.listen(_onKeyEvent);
canvas.onKeyUp.listen(_onKeyEvent);
canvas.onKeyPress.listen(_onKeyEvent);
final listenToMouseEvents = _inputEventMode == InputEventMode.MouseOnly ||
_inputEventMode == InputEventMode.MouseAndTouch;
if (listenToMouseEvents) {
canvas.onMouseDown.listen(_onMouseEvent);
canvas.onMouseUp.listen(_onMouseEvent);
canvas.onMouseMove.listen(_onMouseEvent);
canvas.onMouseOut.listen(_onMouseEvent);
canvas.onContextMenu.listen(_onMouseEvent);
canvas.onMouseWheel.listen(_onMouseWheelEvent);
canvas.onDragEnter.listen(_onMouseEvent);
canvas.onDragLeave.listen(_onMouseEvent);
canvas.onDragOver.listen(_onMouseEvent);
canvas.onDrop.listen(_onMouseEvent);
}
final listenToTouchEvents = _inputEventMode == InputEventMode.TouchOnly ||
_inputEventMode == InputEventMode.MouseAndTouch;
if (listenToTouchEvents && env.isTouchEventSupported) {
canvas.onTouchStart.listen(_onTouchEvent);
canvas.onTouchEnd.listen(_onTouchEvent);
canvas.onTouchMove.listen(_onTouchEvent);
canvas.onTouchEnter.listen(_onTouchEvent);
canvas.onTouchLeave.listen(_onTouchEvent);
canvas.onTouchCancel.listen(_onTouchEvent);
}
Mouse.onCursorChanged.listen((cursorName) => _updateMouseCursor());
_updateMouseCursor();
_updateCanvasSize();
_renderContext.clear(backgroundColor);
}