The pixel effects are what have haunted me the most. I'm still unable to figure out these. But I'm trying :) One more video for me would be just to indicate what all I'm missing. Your Channel Your Rules :)
@@Frankslaboratory Frank, thank you again. I am learning so much from your very clear and in depth explanations. I loved both the CORS topic as well as the built in privacy encapsulation within a class explanation. Looking forward to your next tutorial.
@@Frankslaboratory Ah, really? That's great to hear from you, personally found 90% of it very intuitive, including the areas you mentioned viewers might have trouble understanding. Love the way you went about explaining nested fors, public vs private classes, etc.
Hi Frank, thank so much for these tutorials, not only are they awesome but you are able to articulate what is going on very well. Thanks from New Zealand :)
Also, i’ve been following you for the last year and you’ve been improving extremely well, great job. I need to pick up my motivation back been taking a break for the last few months…
Hi Kevin, nice to meet you. Thank you for taking the time to leave the feedback, makes me happy to hear you are growing your coding skillset. Greetings to France :)
Love your channel! I am working on HTML5 game and in some cases i feel like i need to improve my skills, and your tutorials are perfect for me! Thanks for sharing your experience with canvas :)
Thank you for your nice feedback. There is always much to learn and better way to code something but at certain point when you know all the available tools it becomes much easier
You're back with another great tutorial, Frank. Sorry, I have been busy with work, lately. But I've always loved your channel, Frank. I always learn new stuff. Keep up with the good work
@Franks Laboratory instead of event "change" change it to event listener "input". Doing this allows users to visually see it as they slide the bar, making it animate without having to release and is a very beautiful effect for your viewers.
@@Frankslaboratory Yes, thank you! Maybe you should try to make a mini "photoshop" browser application with some cool effects. With all respect and kindness! :)
@@ra1games79 I really like this idea. In my previous video I showed a drawing application I made years ago with paint brushes. Maybe I could make one focused more on image manipulation as well
Another great tutorial thank you so much! 😃 🙌 I haven't made the full side scroller yet but I'm using all these lessons to make a "Roll20" clone that has the missing features that me and my dad need for the table top RPG we play together! 🥰 SUGGESTION: one thing that I think would really help beginners is to including some debug footage. For example at 28:36 you called the variable "#converToSymbol" instead of "#convertToSymbol" but by 32:32 the error has been fixed. I know it's tempting to gloss over these parts to make the vid more polished but when I was an absolute beginner these things would throw me for a loop and I'd have to move on to another tutorial if I couldn't find a solution in the comments. Debugging is such an important skill that most tutorials just leave out. If you feel that including these parts would be boring or make the videos too long maybe an entire video on debugging tips and tricks (that you could point to in your other videos) would be a good solution. Again thank you so much these videos have been a huge help! Having practical examples of how to write and use relevant code is so important for my learning style! 🙌 I do your tutorials then think "OH! I could use this here!" and go back and update my old projects! 😃 EDIT: I commented too early 😑 you do have some at the end! 😂 I think more of that would be great for beginners!
It's worth mentioning that you should always host the image on your network, for 2 reasons: 1. Converting an image to base64 will produce a string that weighs 1/3 more than the original image size 2. By using a file that contains the data of the image, it can be cachable, unlike base64 which cannot be cached
Hi Avi, these are great points and I agree. I think people who know how to set up a server will be able to replace my base64 string and still follow the tutorial, and beginners can just use base64 and consider this tutorial a coding exercise, at least that was my thinking while recording. I never noticed the difference in size, thank you for bringing that up.
@@Frankslaboratory It's not only for folks who set up a server but any kind of website Even a website that serves static files can benefit from serving images as files
@@avi12 true, it wont work with any web hosted image though, it needs specific server settings, otherwise getImageData operation will get blocked by CORS
The image is of two dimensions to viewers. To free the image data from restricting authorization it has been converted to a string of one dimension on the memory. To help understating the code, one can think of the image data constructing a three dimensional cubic whose axes of coordinate are denoted by X, Y, Z. The Z is vertical to XY plane towords inner. For image, the x value goes from left to right, y from top to bottom, and z holds 4 values of RGBA for each pixel. Each pixel is defined by the locations of x, y and value of z(RGBA) which is the thickness of the cubic.
Hey Frank..all your tutorials are just amazing..iam revisiting all of it again and again to be more creative..also i and my friend started creating canvas games..thankyou so much for all this free stuff..but we have a request for you, can you please also show how to make a canvas project responsive..we are now struggling with that ..please help dear Frank.Best creative teacher ever🥰🥰
converting 2d array to 1d array is done the same way, it's (columnIndex * width) + rowIndex, in our case we have to skip 4 indexes because 1 pixel takes 4 values
@@Frankslaboratory Oh! Bro no need to thank . Recently i started following you and i am really surprised by ur frontend skill.. And bro plz.. increase the consistency of videos 🙂
@@sakshamgunj6991 Consistency can have multiple meanings, for me consistency means quality, not frequency. I can't do more videos and keep the quality up, I have a full time job :D Your frontend skills are also impressive, thank you Saksham
Nice tutorial :) Some minor recommendations would be to use literal strings for better readability. One little thing I wasn't sure about is the average color. It's only reading the first pixel in each cell, which doesn't really mean the average though, or did I miss something?
Hi, yes you are right, I only take the left top pixel from each cell, there is a simple way to average out each cell, I didn't think it was necessary in this case since the end result would look almost identical.
Hi, Frank and chrizZzly ! I had the same impression, Frank samples only one pixel out of entire segment. I'm not really sure, is it safe to assume that a single pixel from a top-left corner of a rectangular pixel area would represent well enought an entire segment avarage color. Maybe with such small images it is fair enought, but when the size of an image grows and the size of a segment shrinks, I would expect some artifacts. And yes - this is pure academic conversation:) Great tutorial anyway!
Hi, Image is converted into a shade of gray, pixelated and with a correspondence table, we convert a gray with a letter, this conversion table is done by measuring the black density of a character. Am I in the right? I don't understand the order of the substitution letters inside the function convertToSymbol Anyway, thank you for your excellent work.
Hi, it depends what type of interaction you are looking for, if it's something simple such as changing colour and font size when near mouse, or something a bit more complex like pushing particles around. It could be combined with my 'Image into interactive particles' tutorial to push them around, but it would need a lot of code restructuring. I might make a course on that, would be a cool effect
@@Frankslaboratory Thanks for your reply. You're right. Converting image to particles and combining pixels Effects with mouse move event, like pushing particles around. That will be more interesting. Look forward to your new tutorial. You're my hero.
@@Xyzzzz307 Oh noo, I'm sorry, that must have been impossibly hard :D You can click at the beginning and then shift + click the end and it will select all the code between these two points
Hi Alexander, to export gif is possible, exporting video format is much more complicated, you need to write encoders, I usually just record my browser animation with OBS Studio screen recorder and then use any video editor to trim it and save as mp4 or gif, quick and easy
Hi Jees, I'm working on a side scroller tutorial, it will be similar gameplay to Mario, still adding more features and adjusting code, I will make multiple games inspired by Mario eventually, it's my favourite classic game genre :D
@@Frankslaboratory Very nice to hear man looking forward to the mini series, it is what a lot of people miss on youtube l, your explaining skills are on point
Can anyone help me? My page just stays loading (the image isn't even failing to load-it's just not doing anything). Some URLs will work (but then the rest of the code doesn't play ball for some reason), so I'm fairly sure it's a problem with the image data type. I have been copying the base64 code with the recommended site, which seems to load up the image fine when not combined with the other code. How do I fix?!
First time i see you video can you please show how to make level one of" street of rage" but from scratch to the very end of the level thx a lot for your anwser
Hi 'Frank'. I wanted to drop a little comment to say 'Hi' as you haven't been here for around 3 weeks. I hope all is well with you. Knowing you, you're probably busy creating more high-quality content for the rest of us.
Hi Nick. Nice to see a message from you. I had to return to office work, no more working from.home so I have less time but new video is ready will release it tomorrow probably. Hope you've been well 🙏
Anything is possible but to output video formats you need encoding algorithms, that's a lot of code or libraries involved. You can have it auto play in browser and export it as a series of images, that's much easier.
@@Frankslaboratory Cool :) I'm trying to learn more JavaScript & that seems like an incredible challenge, but would be a great accomplishment if I could get it to work :)
@@Frankslaboratory we're not going to be here if it's horrible lol 😀. Just saying the first thing that comes to my mind when watching your video "The A.I guy is here"
Hi, technique I use today is a bit more advanced, but it can be used to achieve really cool particle effects as well, not sure if people like more complex stuff like this, experimenting :D
Hi Kirim, I'm not very good with math, but when you know the code and navigate in it well, it's easy to Google simple algorithms and insert them into your JS to achieve all different kinds of effects. I'll speak more about this soon in future video
You do not need to pass width and height in the constructor, you can get a reference to canvas from the context, so you can set: this.#width=ctx.canvs.width;
It's a pleasure to collaborate with a great programmer and teacher like you!!
You taught me much more than I taught you, thanks Evaristo ❤
Nice. Thank you both! I now know how to make private attributes :-) Didn't know they were a thing in JavaScript!
@@Frankslaboratory hey frank you learning c# or any other programming language?
yeeeeeeeeeeeeeeaaaaaah 😍
Hi creative people, do you want more tutorials on pixel particle effects?
yes
The pixel effects are what have haunted me the most. I'm still unable to figure out these. But I'm trying :)
One more video for me would be just to indicate what all I'm missing.
Your Channel Your Rules :)
Yes offcourse!
Sure sir, u r just so amazing
Yes pixels and particles are always fun :-)
Wow! Frank and other top shelf tutorial! You're one of the best there is!
Thank you Benjamin, very kind to say that ❤
Wow! Pixel effect is great, Thanks so much Sir Frank.
Thank you Jeenit :)
Another Fun Friday! Thanks, as always
Happy Friday Nick :)
Thanks a lot Frank for enlarging the text. Now I can watch your teachings on my cellphone device. No one can simplify it any better.
I try to make the code as large as possible in my recent classes, thank you for reminding me that it's useful, I always try to follow feedback
Happy Friday Frank, OMG....this effect takes me back to my childhood. Great tutorial, thanks Frank. Have a fantastic weekend.
Hi Pierson! I'm always up for some over the top, old school, tacky animations, it's my specialty ahaha. Have a great weekend :)
@@Frankslaboratory Frank, thank you again. I am learning so much from your very clear and in depth explanations. I loved both the CORS topic as well as the built in privacy encapsulation within a class explanation. Looking forward to your next tutorial.
Oo nice improvement on the code structure man, great stuffs! :)
Thanks Johnathan, I had a lot of help with the code this time, I'm also a student of JavaScript :)
Thank you! Great introduction to Canvas API as an intermediate programmer
This video is a bit more advanced then my other projects, anything with pixel data gets a bit algorithm heavy, glad you like it
@@Frankslaboratory Ah, really? That's great to hear from you, personally found 90% of it very intuitive, including the areas you mentioned viewers might have trouble understanding. Love the way you went about explaining nested fors, public vs private classes, etc.
I have to say that this is an amazing channel, thanks for all your work Frank
Raúl! Nice to meet you, glad you found my video useful
awsome design efect
Glad you like it. I made many more. Tutorials coming soon
Another great tutorial as always!
Thank you Gintoki
Wait is over
Here he comes again with another great content.
Thanks Kautuk ❤💪
Thats the reason why i am get into coding❤️❤️❤️❤️ thankyou so kuch “frank laboratory “
Hi Rishabh, glad you found some value ♥️
Hi Frank, thank so much for these tutorials, not only are they awesome but you are able to articulate what is going on very well. Thanks from New Zealand :)
Hi Jeremy, greetings from London to New Zealand. Thank you for taking the time to let me know your feedback
Oh gush. This channel is so underrated.
Thanks Andrii. Nice to meet you 😊
Also, i’ve been following you for the last year and you’ve been improving extremely well, great job. I need to pick up my motivation back been taking a break for the last few months…
Thank you for such a nice feedback, sometimes it's hard to find motivation I know, I also struggle with it sometimes. I hope you feel inspired soon :)
Finally!! found a great channel that teaches great stuff. Keep creating this type of amazing content sir!!!
Ayan! Nice to meet you, good to have you here
Hi Franks, you make my skill grow up and i really appriciate all your works ! ! So i really wanna thanks you ;)
From Sout- France !
Hi Kevin, nice to meet you. Thank you for taking the time to leave the feedback, makes me happy to hear you are growing your coding skillset. Greetings to France :)
Hi Frank, nice tutorial as always.. keep up the good work.
Thank you, I will try 💪
Love your channel! I am working on HTML5 game and in some cases i feel like i need to improve my skills, and your tutorials are perfect for me! Thanks for sharing your experience with canvas :)
Thank you for your nice feedback. There is always much to learn and better way to code something but at certain point when you know all the available tools it becomes much easier
You're back with another great tutorial, Frank. Sorry, I have been busy with work, lately. But I've always loved your channel, Frank. I always learn new stuff. Keep up with the good work
Hi Sagar, I missed this comment, nice to see a comment from you, thank you for your support
@Franks Laboratory instead of event "change" change it to event listener "input". Doing this allows users to visually see it as they slide the bar, making it animate without having to release and is a very beautiful effect for your viewers.
Hi, thanks for the tip, just tested it and it does work better :D I made a note and will use input event in the future, thank you for sharing
thank you thats a pretty neat effect :D
I like this video so much! Thank you for your content :)
Really? Thank you, I'm happy to hear that :)
@@Frankslaboratory Yes, thank you! Maybe you should try to make a mini "photoshop" browser application with some cool effects. With all respect and kindness! :)
@@ra1games79 I really like this idea. In my previous video I showed a drawing application I made years ago with paint brushes. Maybe I could make one focused more on image manipulation as well
Thank you so much, will use this on my online socket io game
Hi Sertan, good luck with your project!
Geat job, i didnt know that you can make this.effect without threejs and shaders.... THX, i ll be back ;)
Another great tutorial thank you so much! 😃 🙌
I haven't made the full side scroller yet but I'm using all these lessons to make a "Roll20" clone that has the missing features that me and my dad need for the table top RPG we play together! 🥰
SUGGESTION: one thing that I think would really help beginners is to including some debug footage.
For example at 28:36 you called the variable "#converToSymbol" instead of "#convertToSymbol" but by 32:32 the error has been fixed.
I know it's tempting to gloss over these parts to make the vid more polished but when I was an absolute beginner these things would throw me for a loop and I'd have to move on to another tutorial if I couldn't find a solution in the comments.
Debugging is such an important skill that most tutorials just leave out. If you feel that including these parts would be boring or make the videos too long maybe an entire video on debugging tips and tricks (that you could point to in your other videos) would be a good solution.
Again thank you so much these videos have been a huge help! Having practical examples of how to write and use relevant code is so important for my learning style! 🙌 I do your tutorials then think "OH! I could use this here!" and go back and update my old projects! 😃
EDIT: I commented too early 😑 you do have some at the end! 😂 I think more of that would be great for beginners!
Your tutorials are the best!!!! Thank you so much 🙂
Happy to help Francesca
It's worth mentioning that you should always host the image on your network, for 2 reasons:
1. Converting an image to base64 will produce a string that weighs 1/3 more than the original image size
2. By using a file that contains the data of the image, it can be cachable, unlike base64 which cannot be cached
Hi Avi, these are great points and I agree. I think people who know how to set up a server will be able to replace my base64 string and still follow the tutorial, and beginners can just use base64 and consider this tutorial a coding exercise, at least that was my thinking while recording. I never noticed the difference in size, thank you for bringing that up.
@@Frankslaboratory It's not only for folks who set up a server but any kind of website
Even a website that serves static files can benefit from serving images as files
@@avi12 true, it wont work with any web hosted image though, it needs specific server settings, otherwise getImageData operation will get blocked by CORS
The image is of two dimensions to viewers. To free the image data from restricting authorization it has been converted to a string of one dimension on the memory.
To help understating the code, one can think of the image data constructing a three dimensional cubic whose axes of coordinate are denoted by X, Y, Z. The Z is vertical to XY plane towords inner.
For image, the x value goes from left to right, y from top to bottom, and z holds 4 values of RGBA for each pixel. Each pixel is defined by the locations of x, y and value of z(RGBA) which is the thickness of the cubic.
Hi James, thank you for sharing this, this really helps me to visualise what's going on, love it
Hey Frank..all your tutorials are just amazing..iam revisiting all of it again and again to be more creative..also i and my friend started creating canvas games..thankyou so much for all this free stuff..but we have a request for you, can you please also show how to make a canvas project responsive..we are now struggling with that ..please help dear Frank.Best creative teacher ever🥰🥰
Hi, thank you for such a kind feedback. Yes responsive aspect is very important and I will focus on it more in the future courses
Amazing video. Thanks a lot!
fabulous
Thank you :)
you are an awesome teacher
Thank you for your kind feedback, much appreciated
Amazing tutorial!
Thank you
nice nice nice ^^ am full of idea with that tuto
Hi Boris, awesome, great to hear you feel inspired
You have a nice choice of thumbnails!
Maruf! thank you :)
converting 2d array to 1d array is done the same way, it's (columnIndex * width) + rowIndex, in our case we have to skip 4 indexes because 1 pixel takes 4 values
*thank you so much for this tutorial*
You are the best man
Thank you Sami
Bro this is lit!
Really? Thank you Saksham ❤
@@Frankslaboratory
Oh! Bro no need to thank .
Recently i started following you and i am really surprised by ur frontend skill..
And bro plz.. increase the consistency of videos 🙂
@@sakshamgunj6991 Consistency can have multiple meanings, for me consistency means quality, not frequency. I can't do more videos and keep the quality up, I have a full time job :D Your frontend skills are also impressive, thank you Saksham
@@Frankslaboratory oh! But yeah seriously quality of videos is damn good! And nice to hear, you have a full time job. Keep up man
Nice tutorial :)
Some minor recommendations would be to use literal strings for better readability.
One little thing I wasn't sure about is the average color. It's only reading the first pixel in each cell, which doesn't really mean the average though, or did I miss something?
Hi, yes you are right, I only take the left top pixel from each cell, there is a simple way to average out each cell, I didn't think it was necessary in this case since the end result would look almost identical.
Hi, Frank and chrizZzly !
I had the same impression, Frank samples only one pixel out of entire segment. I'm not really sure, is it safe to assume that a single pixel from a top-left corner of a rectangular pixel area would represent well enought an entire segment avarage color. Maybe with such small images it is fair enought, but when the size of an image grows and the size of a segment shrinks, I would expect some artifacts.
And yes - this is pure academic conversation:) Great tutorial anyway!
Hi,
Image is converted into a shade of gray, pixelated and with a correspondence table, we convert a gray with a letter, this conversion table is done by measuring the black density of a character.
Am I in the right?
I don't understand the order of the substitution letters inside the function convertToSymbol
Anyway, thank you for your excellent work.
cool video.
great tutorial as always ! now how could i move each pixel ?
I released a class on how to move pixels around as individual particles last month
@@Frankslaboratory oh cool ! thx so much, ill check it rn
Thanks for your tutorial. Can I ask if you can share info on how to interact with those particles with mouse move event? Thanks a lot.
Hi, it depends what type of interaction you are looking for, if it's something simple such as changing colour and font size when near mouse, or something a bit more complex like pushing particles around. It could be combined with my 'Image into interactive particles' tutorial to push them around, but it would need a lot of code restructuring. I might make a course on that, would be a cool effect
@@Frankslaboratory Thanks for your reply. You're right. Converting image to particles and combining pixels Effects with mouse move event, like pushing particles around. That will be more interesting. Look forward to your new tutorial. You're my hero.
Sir, I wish you would have told about the 'Word Wrap' at 6:47 before. I've been suffering since weeks.
Word wrap is important, I'm glad you know it now, it makes life easier :)
@@Frankslaboratory
A whole lot easier. I tried changing the image in a project it took me forever to delete the previous base64 🤣🤣
@@Xyzzzz307 Oh noo, I'm sorry, that must have been impossibly hard :D You can click at the beginning and then shift + click the end and it will select all the code between these two points
@@Frankslaboratory
Thank you Sir 😊
👍👍👍👍👍
❤😀😂
im actually speechless
Amazing sir 💓😊🔥
Thanks Nilesh, congratulations on reaching 3k subscribers on your channel!
hello, could you make a video explaining how to save the animation in canvas to webm or gif format. thanks.
Hi Alexander, to export gif is possible, exporting video format is much more complicated, you need to write encoders, I usually just record my browser animation with OBS Studio screen recorder and then use any video editor to trim it and save as mp4 or gif, quick and easy
Hey Frank, love the video’s. Any chance you can make a small tutorial series on super mario bros game? Like goomba’s moving with collision etc
Hi Jees, I'm working on a side scroller tutorial, it will be similar gameplay to Mario, still adding more features and adjusting code, I will make multiple games inspired by Mario eventually, it's my favourite classic game genre :D
@@Frankslaboratory Very nice to hear man looking forward to the mini series, it is what a lot of people miss on youtube l, your explaining skills are on point
@@Frankslaboratory It would be great because you already handled game engine, sprite animation and simple collision detection
is it possible to make the text of the ASCII art a premade text? like, say, a poem? that repeats when it ends...?
U BEST!!!
Thank you
How do you set up your browser to auto-refresh when you change the source code?
VS code with Live server plugin
🤯🤯🤯
💪❤❤
I am jealous to share with my friend 😏
:)
pls sir make a video on 2d shotting game like contra or mario
Yes! I will do that, most likely more than one. I really like that idea
@@Frankslaboratory thank you so much sir
Can anyone help me? My page just stays loading (the image isn't even failing to load-it's just not doing anything). Some URLs will work (but then the rest of the code doesn't play ball for some reason), so I'm fairly sure it's a problem with the image data type. I have been copying the base64 code with the recommended site, which seems to load up the image fine when not combined with the other code. How do I fix?!
Hey, would making a Chart with canvas possible as a tutorial since you have good experience as a canvas coder?
Hi Jay, do you mean some kind of data visualisation like pie charts and bar charts? Interesting, I might do that yea
Very nice project, Instead of ascii characters I used emojies.
effects the avengers
First time i see you video can you please show how to make level one of" street of rage" but from scratch to the very end of the level
thx a lot for your anwser
Hi Jayce, I would love to make a game inspired by street of rage, I will do it, adding it on my to do list
@@Frankslaboratory thx a lot i really enjoy real time from scratch first level
1st than you. 2nd what the name of the game with the space worm… i was playing it a loooot of years ago….!!! Please reply …
Hi. Its Earthworm Jim
Hi 'Frank'. I wanted to drop a little comment to say 'Hi' as you haven't been here for around 3 weeks. I hope all is well with you. Knowing you, you're probably busy creating more high-quality content for the rest of us.
Hi Nick. Nice to see a message from you. I had to return to office work, no more working from.home so I have less time but new video is ready will release it tomorrow probably. Hope you've been well 🙏
I had adhd please can you recommend js course basic to bom to dom and project
Hi, I linked some Udemy courses that I like in the video description.
The fact that you do not have repositories with these projects is your thing? So that people write the code themselves and do not copy?)
Hi Dima, I include code with extended Udemy classes, on UA-cam it has negative effect on my videos, if you want code for something I can send it over
Can you make soft bodies in canvas 2d?
Hi Kabir, yes, I will add it on my list
Is there a way to create a button to download the animation as an AVI or MPEG video?
Anything is possible but to output video formats you need encoding algorithms, that's a lot of code or libraries involved. You can have it auto play in browser and export it as a series of images, that's much easier.
@@Frankslaboratory Cool :) I'm trying to learn more JavaScript & that seems like an incredible challenge, but would be a great accomplishment if I could get it to work :)
@@wcdeich4 Some things can be challenging yea, I'm also learning new things every day, so many possibilities these days
i want to know how to find like ehat to use in j.s on situation where i am a absolute beginner with j.s
Hi Himanshu, how are you. Sorry can you rephrase that, not sure what you mean
Frank is always looking straight like a bot
Are you saying I look stiff on camera? It's true, my camera delivery is horrible haha. I'm a nerd, not comfortable on video ahaha
@@Frankslaboratory we're not going to be here if it's horrible lol 😀. Just saying the first thing that comes to my mind when watching your video "The A.I guy is here"
@@bytenol hahaha, I need to take camera delivery classes or something :D
is it clickable?
这个太牛逼了
Glad you like it :)
Amazing!!! Except for OOP... Ew
Hahahaha
please provide source code of this extremely interesting project.
This one is somewhere on my Codepen
just going to watch your video bro then tell you hows that
Hi, technique I use today is a bit more advanced, but it can be used to achieve really cool particle effects as well, not sure if people like more complex stuff like this, experimenting :D
can you tell me how much math do you know?
Hi Kirim, I'm not very good with math, but when you know the code and navigate in it well, it's easy to Google simple algorithms and insert them into your JS to achieve all different kinds of effects. I'll speak more about this soon in future video
SOURCE CODE PLEASE
codepen
@@Frankslaboratory CAN I HAVE A LINK?
Private class fields look wierd
Yeah. I'm still getting used to them.
Good job bro, JESUS IS COMING BACK VERY SOON;WATCH AND PREPARE
done this, it's great
You do not need to pass width and height in the constructor, you can get a reference to canvas from the context, so you can set: this.#width=ctx.canvs.width;
btw: I love your videos!!!
@@DannyHille Hi Danny, thank you for the tip, I made a note and will use it next time
how can he say clean code and object oriented programming in the same sentence? functional programming is clean. definitely not oop
Mannnn where was your channel this whole time 🥶 I’m overwhelmed by the quality of your content and confused where to start from 🫨
Glad you like my experiments :D
👍👍👍👍👍👍👍👍