229 lines
6.6 KiB
JavaScript
229 lines
6.6 KiB
JavaScript
var $builtinmodule = function (name) {
|
|
var sprite = {__name__: new Sk.builtin.str("sprite")};
|
|
sprite.createBackground = new Sk.builtin.func(function(img) {
|
|
img=Sk.ffi.remapToJs(img);
|
|
return Sk.ffi.remapToPy(SPRITE.CreateBackground(img));
|
|
});
|
|
|
|
sprite.Sprite = Sk.misceval.buildClass(sprite, function($gbl, $loc) {
|
|
|
|
$loc.__init__ = new Sk.builtin.func(function(self, img, x, y, name) {
|
|
img=Sk.ffi.remapToJs(img);
|
|
x=Sk.ffi.remapToJs(x);
|
|
y=Sk.ffi.remapToJs(y);
|
|
name=Sk.ffi.remapToJs(name);
|
|
self.v$name = Sk.ffi.remapToPy(SPRITE.CreateASprite(img, x, y, name));
|
|
});
|
|
|
|
$loc.show = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.show();
|
|
});
|
|
|
|
$loc.hide = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.hide();
|
|
});
|
|
|
|
$loc.enlarge = new Sk.builtin.func(function(self, s) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var s = Sk.ffi.remapToJs(s);
|
|
var t = SPRITE.sprites[name];
|
|
t.enlarge(s);
|
|
});
|
|
|
|
$loc.enlargeTo = new Sk.builtin.func(function(self, s) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var s = Sk.ffi.remapToJs(s);
|
|
var t = SPRITE.sprites[name];
|
|
t.enlargeTo(s);
|
|
});
|
|
|
|
$loc.expandTo = new Sk.builtin.func(function(self, s, time) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var s = Sk.ffi.remapToJs(s);
|
|
var t = SPRITE.sprites[name];
|
|
return t.expandTo(s, time);
|
|
});
|
|
|
|
$loc.move = new Sk.builtin.func(function(self, step) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
step=Sk.ffi.remapToJs(step);
|
|
var t = SPRITE.sprites[name];
|
|
t.move(step);
|
|
});
|
|
|
|
$loc.moveTo = new Sk.builtin.func(function(self, x, y) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
x=Sk.ffi.remapToJs(x);
|
|
y=Sk.ffi.remapToJs(y);
|
|
var t = SPRITE.sprites[name];
|
|
t.moveTo(x, y);
|
|
});
|
|
|
|
$loc.slideTo = new Sk.builtin.func(function(self, x, y, time) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
x=Sk.ffi.remapToJs(x);
|
|
y=Sk.ffi.remapToJs(y);
|
|
time=Sk.ffi.remapToJs(time);
|
|
var t = SPRITE.sprites[name];
|
|
return t.slideTo(x, y, time);
|
|
});
|
|
|
|
$loc.addX = new Sk.builtin.func(function(self, step) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
step = Sk.ffi.remapToJs(step);
|
|
var t = SPRITE.sprites[name];
|
|
t.addX(step);
|
|
});
|
|
|
|
$loc.addY = new Sk.builtin.func(function(self, step) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
step = Sk.ffi.remapToJs(step);
|
|
var t = SPRITE.sprites[name];
|
|
t.addY(step);
|
|
});
|
|
|
|
$loc.getX = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
return Sk.ffi.remapToPy(t.x);
|
|
});
|
|
|
|
$loc.getY = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
return Sk.ffi.remapToPy(t.y);
|
|
});
|
|
|
|
$loc.rotate = new Sk.builtin.func(function(self, degree) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
degree=Sk.ffi.remapToJs(degree);
|
|
var t = SPRITE.sprites[name];
|
|
t.rotate(degree);
|
|
});
|
|
|
|
$loc.rotateTo = new Sk.builtin.func(function(self, degree) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
degree=Sk.ffi.remapToJs(degree);
|
|
var t = SPRITE.sprites[name];
|
|
t.rotateTo(degree);
|
|
});
|
|
|
|
$loc.circleTo = new Sk.builtin.func(function(self, degree, time) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
degree=Sk.ffi.remapToJs(degree);
|
|
var t = SPRITE.sprites[name];
|
|
return t.circleTo(degree);
|
|
});
|
|
|
|
$loc.hit = new Sk.builtin.func(function(self, sprite2) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var name2 = Sk.ffi.remapToJs(sprite2.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
var t2 = SPRITE.sprites[name2];
|
|
return Sk.ffi.remapToPy(t.hit(t2));
|
|
});
|
|
|
|
$loc.outOfScreen = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
return Sk.ffi.remapToPy(t.outOfScreen());
|
|
});
|
|
|
|
$loc.mouseAction = new Sk.builtin.func(function(self, calc) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.mouseAction(()=>{Sk.misceval.callsim(calc)});
|
|
});
|
|
|
|
$loc.isClicked = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
return Sk.ffi.remapToPy(t.isDown);
|
|
});
|
|
|
|
// new
|
|
$loc.setScale = new Sk.builtin.func(function(self, h, w) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.setScale(h, w);
|
|
});
|
|
$loc.filterGray = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.filterGray();
|
|
});
|
|
$loc.filterBrighter = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.filterBrighter();
|
|
});
|
|
$loc.filterOrigin = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.sprites[name];
|
|
t.filterOrigin();
|
|
});
|
|
}, 'Sprite', []);
|
|
|
|
sprite.Text = Sk.misceval.buildClass(sprite, function($gbl, $loc) {
|
|
|
|
$loc.__init__ = new Sk.builtin.func(function(self, text, x, y, name) {
|
|
text=Sk.ffi.remapToJs(text);
|
|
x=Sk.ffi.remapToJs(x);
|
|
y=Sk.ffi.remapToJs(y);
|
|
name=Sk.ffi.remapToJs(name);
|
|
self.v$name = Sk.ffi.remapToPy(SPRITE.CreateText(text, x, y, name));
|
|
});
|
|
|
|
$loc.changeText = new Sk.builtin.func(function(self, text) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
text=Sk.ffi.remapToJs(text);
|
|
var t = SPRITE.texts[name];
|
|
t.changeText(text);
|
|
});
|
|
|
|
$loc.show = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.texts[name];
|
|
t.show();
|
|
});
|
|
|
|
$loc.hide = new Sk.builtin.func(function(self) {
|
|
var name = Sk.ffi.remapToJs(self.v$name);
|
|
var t = SPRITE.texts[name];
|
|
t.hide();
|
|
});
|
|
|
|
}, 'Text', []);
|
|
|
|
sprite.clearAllSprites = new Sk.builtin.func(function() {
|
|
return Sk.ffi.remapToPy(SPRITE.ClearAllSprites());
|
|
});
|
|
|
|
sprite.repeat = new Sk.builtin.func(function(calc = new Function()) {
|
|
SPRITE.Repeat(()=>{Sk.misceval.callsim(calc)});
|
|
});
|
|
|
|
sprite.keyboardListener = new Sk.builtin.func(function(key, calc = new Function()) {
|
|
key = Sk.ffi.remapToJs(key);
|
|
SPRITE.KeyboardListener(key,()=>{Sk.misceval.callsim(calc)});
|
|
});
|
|
|
|
sprite.isKeyboardHit = new Sk.builtin.func(function(keyvalue) {
|
|
keyvalue = Sk.ffi.remapToJs(keyvalue);
|
|
return Sk.ffi.remapToPy(SPRITE.IsKeyboardHit(keyvalue));
|
|
});
|
|
|
|
sprite.getTime = new Sk.builtin.func(function() {
|
|
return Sk.ffi.remapToPy(Math.floor(SPRITE.timer/1000));
|
|
});
|
|
|
|
sprite.clearTimer = new Sk.builtin.func(function() {
|
|
SPRITE.ClearTimer();
|
|
});
|
|
|
|
return sprite;
|
|
} |