turtle.js

total 0
used 0
limit 0
/* title: Example categories: basic dragging files: head point pointlist stage mouse dragging stroke ../point_src/constrain-distance.js ../point_src/functions/range.js ../point_src/split.js ../point_src/relative-xy.js --- */ class MainStage extends Stage { // canvas = document.getElementById('playspace'); canvas = 'playspace' steps() { return [ ['forward', 1] // unit of width , ['down'] , ['rotate', 10] // degree , ['forward', 4] // degree , ['up'] // degree , ['goto', 0] ] } mounted(){ this.points = new PointList( [250 , 50, 20] // , [250 , 170, 20, -90] // , [250 , 290, 20] ).cast() this.dragging.add(...this.points) this.stepTick = 0 } draw(ctx){ this.clear(ctx) this.points.pen.indicator(ctx, 'green') this.performStep(ctx, this.stepTick++, 20) } performStep(ctx, tick, stepCount=1) { let items = this.steps() let item = items[Math.floor(tick % items.length)] range(stepCount).forEach(()=>{ this.performAction(item) }) } performAction(item) { let func = `${item[0]}_Action` let args = item.slice(1,) return this[func].apply(this, args) } forward_Action(distance) { let item = this.points.last() item.relative.forward(item.radius * 2 * distance) } down_Action() { // let item = this.points.last() // item.relative.forward(item.radius * 2 * distance) } rotate_Action() {} forward_Action() {} up_Action() {} goto_Action() {} } stage = MainStage.go(/*{ loop: true }*/)
Run
Meta Data
title Example
imports ()
files ('head', 'point', 'pointlist', 'stage', 'mouse', 'dragging', 'stroke', '../point_src/constrain-distance.js', '../point_src/functions/range.js', '../point_src/split.js', '../point_src/relative-xy.js')
unused_keys ()
unknown_keys ('categories',)
categories ['basic', 'dragging']
filepath_exists True
path turtle.js
filepath turtle.js
clean_files ('../point_src/core/head.js', '../point_src/pointpen.js', '../point_src/compass.js', '../point_src/center.js', '../point_src/point-content.js', '../point_src/pointdraw.js', '../point_src/relative-xy.js', '../point_src/pointcast.js', '../point_src/point.js', '../point_src/pointlistdraw.js', '../point_src/pointlistgradient.js', '../point_src/pointlistshape.js', '../point_src/pointlistgenerator.js', '../point_src/unpack.js', '../point_src/pointlist.js', '../point_src/pointlistpen.js', '../point_src/stage-resize.js', '../point_src/functions/resolve.js', '../point_src/stage.js', '../point_src/events.js', '../point_src/automouse.js', '../point_src/functions/clamp.js', '../point_src/distances.js', '../point_src/protractor.js', '../point_src/text/beta.js', '../point_src/dragging.js', '../point_src/setunset.js', '../point_src/stroke.js', '../point_src/constrain-distance.js', '../point_src/functions/range.js', '../point_src/split.js')
markdown {'html': '', 'content': 'title: Example\ncategories: basic\n dragging\nfiles:\n head\n point\n pointlist\n stage\n mouse\n dragging\n stroke\n ../point_src/constrain-distance.js\n ../point_src/functions/range.js\n ../point_src/split.js\n ../point_src/relative-xy.js\n---'}