Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 省道帆布运动_Dart_Dart Html - Fatal编程技术网

Dart 省道帆布运动

Dart 省道帆布运动,dart,dart-html,Dart,Dart Html,在dart中,这样做画布运动的最佳方法是什么? 我正在尝试让画布平滑移动,想看看Dart能做些什么 还有Dart的JSFIDLE alt吗 var canvas = document.getElementById("canvas"), ctx = canvas.getContext("2d"); canvas.width = canvas.height = 300; var x = 150, y = 150, velY = 0, velX = 0, speed = 2, friction

在dart中,这样做画布运动的最佳方法是什么?

我正在尝试让画布平滑移动,想看看Dart能做些什么

还有Dart的JSFIDLE alt吗

var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");

canvas.width = canvas.height = 300;

var x = 150,
y = 150,
velY = 0,
velX = 0,
speed = 2,
friction = 0.98,
keys = [];

function update() {

if (keys[38]) {
    if (velY > -speed) {
        velY--;
    }
}

if (keys[40]) {
    if (velY < speed) {
        velY++;
    }
}
if (keys[39]) {
    if (velX < speed) {
        velX++;
    }
}
if (keys[37]) {
    if (velX > -speed) {
        velX--;
    }
}

velY *= friction;
y += velY;
velX *= friction;
x += velX;

if (x >= 295) {
    x = 295;
} else if (x <= 5) {
    x = 5;
}

if (y > 295) {
    y = 295;
} else if (y <= 5) {
    y = 5;
}

ctx.clearRect(0, 0, 300, 300);
ctx.beginPath();
ctx.arc(x, y, 5, 0, Math.PI * 2);
ctx.fill();

setTimeout(update, 10);
}

update();

document.body.addEventListener("keydown", function (e) {
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function (e) {
keys[e.keyCode] = false;
});
var canvas=document.getElementById(“canvas”),
ctx=canvas.getContext(“2d”);
canvas.width=canvas.height=300;
var x=150,
y=150,
Vy=0,
velX=0,
速度=2,
摩擦力=0.98,
键=[];
函数更新(){
如果(键[38]){
如果(速度>速度){
弗利——;
}
}
如果(键[40]){
如果(速度<速度){
vc++;
}
}
如果(键[39]){
如果(velX<速度){
velX++;
}
}
如果(键[37]){
如果(velX>-速度){
绒毛--;
}
}
=摩擦;
y+=0;
velX*=摩擦;
x+=velX;
如果(x>=295){
x=295;
}否则,如果(x295){
y=295;
}否则,如果(y我知道有,但它似乎没有JSFiddle强大

对于您的示例,下面是等效的Dart代码:

import 'dart:html';
import 'dart:math';
import 'dart:async';

void main() {
    CanvasElement canvas = querySelector('canvas');
    CanvasRenderingContext2D ctx = canvas.context2D;
    canvas.width = canvas.height = 300;

    int x = 150;
    int y = 150;
    double velY = 0.0;
    double velX = 0.0;
    int speed = 2;
    double friction = 0.98;
    Map<int, bool> keys = new Map<int, bool>();

    void update() {
        if (keys[38]) {
            if (velY > -speed)
            {
                velY--;
            }
        }
        if (keys[40]) {
            if (velY < speed) {
                velY++;
            }
        }
        if (keys[39]) {
            if (velX < speed) {
                velX++;
            }
        }
        if (keys[37]) {
            if (velX > -speed) {
                velX--;
            }
        }

        velY *= friction;
        y += velY;
        velX *= friction;
        x += velX;

        if (x >= 295) {
            x = 295;
        } else if (x <= 5) {
            x = 5;
        }

        if (y > 295) {
            y = 295;
        } else if (y <= 5) {
            y = 5;
        }

        ctx.clearRect(0, 0, 300, 300);
        ctx.beginPath();
        ctx.arc(x, y, 5, 0, PI * 2);
        ctx.fill();
        var timer = new Timer(new Duration(milliseconds:10), update);
     }

    update();

    document.body.onKeyDown.listen((e) => keys[e.keyCode] = true);
    document.body.onKeyUp.listen((e) => keys[e.keyCode] = false);
  }
导入'dart:html';
导入“dart:math”;
导入“dart:async”;
void main(){
CanvasElement canvas=querySelector('canvas');
CanvasRenderingContext2D ctx=canvas.context2D;
canvas.width=canvas.height=300;
int x=150;
int y=150;
双精度=0.0;
双水平=0.0;
内速度=2;
双摩擦=0.98;
映射键=新映射();
无效更新(){
如果(键[38]){
如果(速度>速度)
{
弗利——;
}
}
如果(键[40]){
如果(速度<速度){
vc++;
}
}
如果(键[39]){
如果(velX<速度){
velX++;
}
}
如果(键[37]){
如果(velX>-速度){
绒毛--;
}
}
=摩擦;
y+=0;
velX*=摩擦;
x+=velX;
如果(x>=295){
x=295;
}否则,如果(x295){
y=295;
}否则,如果(y键[e.keyCode]=true);
document.body.onKeyUp.listen((e)=>keys[e.keyCode]=false);
}

你也可以利用DART API中的东西来简化你的代码。

你可以把它翻译成DART代码。你也应该考虑使用<代码>窗口。