jBB <basic-style-canvas />

Übersicht Sonstiges Smalltalk

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen

DAK

BeitragDo, Dez 06, 2018 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr coole Sache! Wirklich schön gemacht!
Gewinner der 6. und der 68. BlitzCodeCompo

Farbfinsternis

BeitragDo, Dez 06, 2018 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke DAK Very Happy

Version 0.7.0 am Stizzel ... Für die 0.6.0 habe ich jetzt nicht extra was geposted, weil ... soviel war es ja dann doch nicht. Nun sind aber alle Math und String Funktionen drin.

Code: [AUSKLAPPEN]

06.12.2018 -- 0.7.0
added: Abs()
added: ACos()
added: ASin()
added: ATan()
added: ATan2()
added: Bin()
added: Ceil()
added: Cos()
added: Exp()
added: Floor()
added: Hex()
added: Log()
added: Log10()
added: PI
added: Sgn()
added: Sin()
added: Tan()
added: Asc()
added: Chr()
added: Instr()
added: Left()
added: Len()
added: Lower()
added: LSet()
added: Mid()
added: Replace()
added: Right()
added: RSet()
added: Str()
added: RString()
added: Trim()
added: Upper()

05.12.2018 -- 0.6.0
added: jBB.debugLog()
added: DebugLog()
added: jBB.keyDown()
added: jBB.keyUp()
added: jBB.flushKeys()
added: KeyDown()
added: KeyHit()
added: FlushKeys()

04.12.2018 -- 0.5.0
added: jBB.ImageObject.rectCollide()
added: jBB.imageRectCollide()
added: ImageRectCollide()
added: ImageRectOverlap()
added: jBB.tFormFilter()
added: jBB.ImageObject.scale()
added: jBB.ImageObject.resize()
added: jBB.scaleImage()
added: jBB.resizeImage()
added: ScaleImage()
added: ResizeImage()
added: jBB.ImageObject.midHandle()
added: jBB.midHandle()
added: midHandle()
added: TFormFilter()
added: jBB.ImageObject.tile()
added: jBB.tileImage()
added: TileImage()
added: TileBlock()
added: SetVirtualRes()
added: VirtualRes()
changed: MidHandle and ResizeImage can now be used before the main loop

30.11.2018 -- 0.4.0
added: jBB.FontObject (class)
added: jBB.loadFont()
added: LoadFont()
added: jBB.setFont()
added: SetFont()
added: jBB.text()
added: Text()
added: LoadAnimImage()
added: jBB.mouseDown()
added: jBB.mouseHit()
added: MouseDown()
added: MouseHit()
added: FlushMouse()
added: GetMouse()
changed: DrawImage has now the optional parameter "frame"
fixed: MilliSecs() now returns a useful value

29.11.2018 -- 0.3.0
added: jBB.preRender()
added: jBB.postRender()
added: jBB.loop()
added: jBB.imageXHandle()
added: jBB.imageYHandle()
added: jBB.handleImage
added: ImageXHandle()
added: ImageYHandle()
added: HandleImage()
added: jBB.setAlpha()
added: jBB.SetAlpha()
added: jBB.imageWidth()
added: jBB.imageHeight()
added: ImageWidth()
added: ImageHeight()
added: Rand()
changed: jBB no more call the mainLoop directly. The framework will do that in jBB.loop() after jBB.preRender() and before jBB.postRender()
fixed: jBB.loop() will be called after the DOM is loaded. So you can call many information functions before the mainloop (like GraphicsWidth)
fixed: images with handling (HandleImage or AutoMidHandle) are now correctly drawn on they positions while they are rotated
fixed: some stuttering is fixed. jBB will now render absolutly smooth in any resolution
know issue: while AutoMidHandle ist active, HandleImage has no effect

28.11.2018 -- 0.2.0
added: Graphics()
added: GraphicsWidth()
added: GraphicsHeight()
added: ClsColor()
added: Cls()
added: Color()
added: Rect()
added: Line()
added: Plot()
added: LoadImage()
added: DrawImage()
added: jBB.appTitle()
added: jBB.autoMidHandle()
added: jBB.mouseX()
added: jBB.mouseY()
added: jBB.milliSecs()
added: AppTitle()
added: AutoMidHandle()
added: MouseX()
added: MouseY()
added: MilliSecs()
added: jBB.rotateImage()
added: RotateImage()
changed: moved from setInterval to requestAnimationFrame for smooth CPU rendering
changed: jBB.ImageObject.draw is skipped while the image is not loaded

27.11.2018 -- 0.1.0
added: main class jBB and initialization
added: jBB.ColorObject (class)
added: jBB.ImageObject (class)
added: jBB.graphics()
added: jBB.graphicsWidth()
added: jBB.graphicsHeight()
added: jBB.clsColor()
added: jBB.cls()
added: jBB.color()
added: jBB.rect()
added: jBB.line()
added: jBB.loadImage()
added: jBB.drawImage()


Download jBB 0.7.0
Farbfinsternis.tv
 

c64

BeitragSa, Dez 08, 2018 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Woow!

Arbeitest immer noch dranne? Cool!

Ist mir eben aufgefallen, weil stand oben! Ich mache gerade auch ein Framework wollte ich garnicht aber ist irgendwie ausgeartet alles (wollte nur n simples 2D Game mit WebRTC machen ... *gg) . Hab mich auch fürs erste am BlitzBasic/Max Befehlsatz orientiert, hab den halt auch lieb gewonnen Smile !


Frohes schaffen weiterhin, und beste Grüße!
Patrick
Betreten verboten! Kinder haften für ihre Eltern!

Farbfinsternis

BeitragDi, März 12, 2019 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
*Huch* ... c64 ... Dich habe ich ja komplett überlesen Very Happy

Ja, immer noch. Jetzt neu: Mit Repository Wink https://github.com/Farbfinsternis/jBB
Farbfinsternis.tv

Trust

BeitragSo, Mai 12, 2019 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ein echt tolles Projekt!

Hoffentlich bleibst du dran.

Habe es mal ein bisschen getestet und denke ich werde es als Basis für ein eigenes Projekt nehmen.
Die wichtigsten Sachen sind enthalten, nicht zu viel dass es wieder unnötig Aufgebläht ist.

Was ich mir nur wünschen würde ist, Dateien ganz einfach lesen und schreiben zu können.
Habe dazu mal ein Issue geschrieben in dem GitHub repo.

Ich weis, man könnte das auch per js machen, aber es ist immer ein Umstand. Da wäre es sehr praktisch wenn es 2 Funktionen gäbe, welche von und in js strings lesen/schreiben, wie etwa WriteFile(path, "content") und var txt = ReadFile(path).

Ebenfalls wäre Sound noch gut. Kann ja auch ganz einfach gehalten sein mit 4 Funktionen:
LoadSound(path), PlaySound(sound), StopSound(sound), IsSoundPlaying(sound)
Dabei reicht ja ein Soundformat. Am besten eins welches frei und platfomunabhängig ist, ogg zB. (aber das ist dir überlassen) .

Wenn die beiden Dinge noch implementiert wären, wäre das Framework wirklich eine runde Sache - klein und fein und sehr einfach. Einfacher als alles andere was ich bisher ausprobiert habe wie zB. pixi.js, phaser, melonJS und wie sie alle heißen.

G,
Trust
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragMo, Mai 13, 2019 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Sound-, File- und andere Funktionen werden noch reimplementiert.
Farbfinsternis.tv

Farbfinsternis

BeitragDi, Mai 14, 2019 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Rudimentär kann man jetzt Soundfiles laden und abspielen ... im Chrome aber erst wenn man das Canvas angeklickt hat. Ist so eine Anti-Nerv-Strategie von Google dass nicht jede x-beliebige Site Sound abspielt. Normale Gamesounds werden das nächste sein, aber ersmo gucken ob ich dem Canvas sagen kann dass es gerade angeklickt wurde Wink
Code: [AUSKLAPPEN]

added: jMusic
added: jMusic.load
added: jMusic.play
added: jBB.loadMusic
added: jBB.playMusic
added: LoadMusic
added: PlayMusic


Wie gesagt, das ist alles noch sehr rudimentär. Funktioniert in allen Browsern (außer in Chrome) aber sehr gut.
Farbfinsternis.tv

Trust

BeitragDo, Mai 16, 2019 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah Tip Top, werde gleich mal die neue Version in mein Projekt integrieren und das mal testen. Smile
Falls es dich interessiert wo diese zum Einsatz kommt -> Javascript Game Editor.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragDo, Mai 16, 2019 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Trust hat Folgendes geschrieben:
Ah Tip Top, werde gleich mal die neue Version in mein Projekt integrieren und das mal testen. Smile
Falls es dich interessiert wo diese zum Einsatz kommt -> Javascript Game Editor.

Hatte ich schon mal kurz überflogen Wink
Farbfinsternis.tv

DivineDominion

BeitragFr, Mai 17, 2019 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Spannende Projekte, Leute! Ich folge euch auch mal auf GitHub Smile
christian.tietze@gmail.com - https://christiantietze.de
macOS

Farbfinsternis

BeitragFr, Mai 17, 2019 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
DivineDominion hat Folgendes geschrieben:
Spannende Projekte, Leute! Ich folge euch auch mal auf GitHub Smile


coole Sache das Very Happy

@Trust: Warum hast Du in Deinem Fork "LoadImage2" hinzugefügt? LoadImage macht doch genau das.
Farbfinsternis.tv

Trust

BeitragSo, Mai 19, 2019 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Loadimage kann der User direkt die Zellenbreite/Höhe in Pixel angeben, bei LoadImage2 kann er die Anzahl der Reihen und Spalten angeben. Also angenommen das Image ist 40x40 Pixel und jedes Frame hat 10x10 Pixel, dann würde er bei Loadimage 10,10 angeben, bei Loadimage2 würde er 4,4 angeben können.
Dachte mir das ist ein nettes Extra. Deshalb auch aus Treue zur BlitzBasic das LoadImage gelassen und ein extra LoadImage2. Und weil es in Typescript leider keine normale Überladung gibt.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragMo, Mai 20, 2019 7:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Trust hat Folgendes geschrieben:
[...] weil es in Typescript leider keine normale Überladung gibt.


Gucke Dir mal meinen Source an, ich überlade dort andauernd.
Farbfinsternis.tv

Trust

BeitragMo, Mai 20, 2019 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Gucke Dir mal meinen Source an, ich überlade dort andauernd.


Hab ich natürlich (und habe auch deine image.ts so gut es ging nach deinem Stil versucht, um das "row, column,"-Feature zu erweitern). Ich meinte auch "normales" Overloading wie man es von typischen OOP Sprachen kennt.
Da TypeScript in JavaScript übersetzt wird, JavaScript aber keine Typen in dem Sinne hat, kann es auch so ohne Work-Around seitens TypeScript nicht gehen.
Daher ist das, was man in TypeScript unter Overloading versteht, kein richtiges Overloading.

Das hat unter anderem folgende Gründe:

- in einer JS Funktion haben die Parameter keine Typen
- es findet kein Typechecking der Parameter statt
- JS Funktionen werden nicht auf Anzahl der Parameter überprüft

Daher ist folgendes zwar möglich aber unsicher:

Code: [AUSKLAPPEN]

constructor(name:string, age:number, size:number)
constructor(name:string, age:number)
constructor(arg1:any, arg2:any, arg3:any)
{
}

wird der 2te constructer aufgerufen, ist arg3:any undefined.

Folgendes wäre sicherer, lässt aber nur eine fest definierte Anzahl an Parametern zu.

Code: [AUSKLAPPEN]

function add(a:string, b:string):string;

function add(a:number, b:number): number;

function add(a: any, b:any): any {
    return a + b;
}


Mein LoadImage2 hat eine andere Anzahl an Parametern (kein cellCount Parameter, da dieser eigentlich Überflüssig ist, genauso wie "startCell". Diese wurden damals in BB benötigt, um nur einen Teil des Images in den Speicher zu laden. Dies findet in jBB jedoch nicht statt, da wird immer das ganze Image geladen (Was wahrscheinlich auch so ohne weiteres nicht anders möglich ist, da kenne ich mich nicht genug aus). Diese Parameter werden wahrscheinlich deshalb, wenn ich das richtig gesehen habe, in deinem Code auch nie verwendet)
Der größte Knackpunkt allerdings war, dass ich den Parameter weglassen musste um einen unterschied zu dem Originalkonstruktor zu haben, denn meiner wäre komplett Identisch:
Code: [AUSKLAPPEN]

constructor(path:string, cellColumns:number, cellRows:number, startCell:number, context:Core)
constructor(path:string, cellWidth:number, cellHeight:number, startCell:number, cellCount:number, context:Core)


Wie zu sehen ist, würde ich cellCount:number noch hinzufügen, wäre er von der Signatur nicht mehr zu unterscheiden.

Nun hatte ich 2 Möglichkeiten, entweder ich definiere in der jBB.ts für LoadImage auch wieder eine "any" Funktion (womit wir insgesammt 3 LoadImage definitionen hätten und wieder das unschöne verhalten dass ein Parameter undefined ist, oder ich definiere eine LoadImage2 Funktion.

Aber viel gerede kurzer Sinn, wenn dir die Änderung nicht gefällt, dann kann ich sie auch wieder raus nehmen (neuer Pullrequest), das ist kein Problem. Es ist schließlich dein Repo Smile

Ich hoffe dieser Post kommt nicht irgendwie falsch rüber, er soll niemanden angreifen - keineswegs, ich wollte nur mal meinen Gedankengang schildern, wie ich zu diesem Entschluss kam eine LoadImage2 Funktion anzulegen.

Aber korrigiere mich bitte wenn ich falsch liege, ich programmiere nicht täglich mit TypeScript, daher kenne ich mich nicht so aus wie jemand der damit täglich arbeitet.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragMo, Mai 20, 2019 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles gut, konnte mir nur nicht erklären warum Du das gemacht hast. Ich ging davon aus dass Du es nicht gesehen hast Very Happy
Farbfinsternis.tv

Trust

BeitragSa, Jun 15, 2019 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich ein Spiel, erstellt mit jBB auf meinem Smartphone lade, funktionieren die MouseHit-Funktionen nicht mehr. Also es sind keine Nutzereingaben mehr möglich über touch.

Ich habe das Spiel testweise auf meinen Server geladen und die Seite aufm Smartphone aufgerufen... rufe ich die Seite vom PC auf, funktioniert alles.

Hier kann getestet werden was ich mein: Silvermans Chess.

Irgendwelche Ideen?
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragMo, Jun 17, 2019 7:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Trust hat Folgendes geschrieben:
Wenn ich ein Spiel, erstellt mit jBB auf meinem Smartphone lade, funktionieren die MouseHit-Funktionen nicht mehr. Also es sind keine Nutzereingaben mehr möglich über touch.

Ich habe das Spiel testweise auf meinen Server geladen und die Seite aufm Smartphone aufgerufen... rufe ich die Seite vom PC auf, funktioniert alles.

Hier kann getestet werden was ich mein: Silvermans Chess.

Irgendwelche Ideen?


Danke für das Testen. Ich gucke mir den Bug mal an.
Farbfinsternis.tv

Trust

BeitragMo, Jun 17, 2019 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wäre echt super wenn es auch mobile funktionieren würde.

Also so wie es aussieht ist es kein Bug sondern ein Feature das fehlt. Smile
Der Browser hat für Touchdevices eigene Events (touchstart, touchend, touchcancel und touchmove)
Diese müssen einfach ebenfalls wie mousehit usw implementiert werden.
Was allerdings mitunter passieren wird, bzw. berücksichtigt werden sollte ist, dass, wenn man auf Mobile auf einem Canvas umherwischt, wird man eine skrollbare Seite damit ebenfalls dementsprechend zugleich umherscrollen - was natürlich nicht erwünscht ist.
Das Scrollen der Seite muss dann jBB bei einem Touchevent kurzeitig deaktivieren. Eventuell wäre es super, wenn man das über eine Flagfunktion einstellen könnte. "ScrollingOnCanvasTouch(true)" oder so in der Art.

Infos habe ich hier gefunden:
https://developer.mozilla.org/...uch_events

Das mit dem Scrolling hier: (Unter TouchInput)
http://bencentra.com/code/2014...vents.html

Hoffe das hilft dir weiter.

PS. Hier mal die "normale" Schachvariante mit dem Scrollingproblem zum testen: ChessLink
Funktioniert auf dem PC super, auf Mobile eine Qual.
Das Schachspiel funktioniert so, dass man einen Zug macht, einen link generiert, diesen dann aus der Browseradresszeile kopiert und seinem Gegenspieler schickt. Sinn dahinter war eine Art Briefschach zu entwickeln ohne sich gleich irgendwo registrieren zu müssen. Allerdings wäre es grad auf Smartphones echt super, weil man das eigentlich immer dabei hat und nicht extra den PC anschmeißen muss.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Farbfinsternis

BeitragDi, Feb 04, 2020 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mini Update *hui*
Code: [AUSKLAPPEN]

- probably fixed: Uneven image dimension causes certain frames not showing
- fixed: sound is not playing after loading the jBB application
- fixed: MouseHit doesn't work on mobile


https://github.com/Farbfinsternis/jBB
Farbfinsternis.tv

Farbfinsternis

BeitragMi, Feb 05, 2020 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heutige Commit beinhaltet den Start der File Funktionen. Anfänglich wollte ich es mittels der Local Storage lösen (was einfacher gewesen wäre), aber dann wären wir auf maximal 10MB Speicher beschränkt gewesen. Jetzt löse ich das mit einer IndexedDatabase, was die Sache komplizierter macht, aber wir haben dann soviel Speicher wie der Rechner her gibt.

[EDIT] Ach ja. Sound wird jetzt auch abgespielt wenn das Canvas noch nicht angeklickt wurde und auch sonst sind alle Fehler behoben die Chrome so raus haut wenn das Canvas nicht im Fokus ist. [/EDIT]
Farbfinsternis.tv

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group