javascript
83 TopicsPerfect Match?
Hello! Typography is a big part of elearning design. And being a total font nerd, I love it when I find the 'Perfect Match'. This interaction is built around two dials and has been optimised for mobile phones. Javascript randomises the starting position of the dials at the start of each game. It also controls how far the dial turns with each tap. When the value of Dial1 and Dial2 match, a feedback layer is shown, and the score increases. When you hit 4/4, the game resets. The AI voiceover is 'Liam' with the style exaggerated to ~70, and I used Suno to create the game show-style theme tune. This plays on repeat until the score hits 4/4, when it is stopped and replaced by applause. But you can also mute the music during the game if it's not your jam. The content is based on this article. I had a lot of fun making this one! Let me know what you think. If you have any questions, please ask. PLAY HERE: https://bit.ly/elhc54028Views2likes0CommentsTurn That Light Off
Hello! Non-human characters can be a strong choice for your e-learning courses. They're often more popular with users than AI avatars. My characters always come across as a bit grumpy, for some reason... Believe it or not, this is a regular 'pick one' freeform question slide. The character was created using Nano Banana, and I manipulated it in Pixlr to create the different mouth shapes. The animation is achieved through rapid state changes, synchronised to the waveform of each bit of narration. This is controlled by Javascript that I wrote with the help of Claude.ai. The voice is Dave, one of my favourite Storyline AI voices, with the style exaggerated to 75 😀 Switch my demo on here: https://bit.ly/elhc539
(loading) speed of Storyline 360 slides
Hi all, Does anyone know what influences the loading time of storyline 360 slides? We are creating educational games with storyline, and are trying to figure out how we can decrease the amount of loading (with the three loading dots) between slides. I have a few ideas on what impacts the slide loading time, for example: Amount of layers on a slide Amount of objects on a slide Amount of images in a slide The length of javascript functions The amount of audio files The size of audio files The amount of video files And maybe other that I haven't thought of yet.. And a few questions: Does it matter if you put objects / images / video / audio on timeline start, or after let's say 1 second? How does Storyline internal "pre-load" slide work? I have read somewhere it makes an educated guess which slide comes next, and preloads it. But, as we make a slide selection based on variables, that won't work. Is there any way we can feed storyline information about the upcoming slide, so it can preload it already? I'm very curious to your insights. I will also do some research myself the next few months, and share the outcome, but it will help to gather some input and thoughts from other users before diving in further!145Views1like3Comments2025: The Year AI Landed
If you're hearing this message, the machines have won, and Instructional Design is dead as we know it... Hello! For this week's #ELearningChallenge I've created an interactive video portfolio to highlight four projects I built this year with the help of artificial intelligence. Despite the apocalyptic tone, I'm excited about the creative possibilities of generative AI. I certainly couldn't have made this last year. Videos created using Powtoon's AI Text to Video feature and edited with Camtasia. And just like my recent coffee-making demo, this is also fully accessible from the keyboard. Anywhere you see an underlined letter in a button, that key will perform its function. If you're wondering how I changed the colour of the captions from white to black, and back again, to improve legibility during the intro... Code to change captions to white // Stop any existing observer first if (window.captionObserver) { window.captionObserver.disconnect(); } // Monitor for caption changes and force white color window.captionObserver = new MutationObserver(function() { var allCaptionElements = document.querySelectorAll('[class*="caption"], [class*="acc-"]'); allCaptionElements.forEach(function(element) { element.style.setProperty('color', 'white', 'important'); var children = element.querySelectorAll('*'); children.forEach(function(child) { child.style.setProperty('color', 'white', 'important'); }); }); }); window.captionObserver.observe(document.body, { childList: true, subtree: true, attributes: true }); Code to change captions back to black // Stop the white observer if (window.captionObserver) { window.captionObserver.disconnect(); } // Apply black once var allCaptionElements = document.querySelectorAll('[class*="caption"], [class*="acc-"]'); allCaptionElements.forEach(function(element) { element.style.setProperty('color', 'black', 'important'); var children = element.querySelectorAll('*'); children.forEach(function(child) { child.style.setProperty('color', 'black', 'important'); }); }); And yes, AI helped me do this! Sift through the wreckage of my career here: https://bit.ly/elhc534 Oh, and shout out to any fans of SILO.
Learning Science Update
Challenge Submission – Minimal, Review-Friendly AI-Assisted Animation For this challenge, two slides from the Opportunity theme in the content library were selected as a focused demonstration of AI-assisted animation approaches. This submission explores how AI-assisted JavaScript prompting can be used to create effective motion design while remaining easy to review, understand, and reuse across projects. Slide 1 intentionally uses the first AI-suggested JavaScript animation without modification. The goal was to evaluate the quality of a default AI-generated timeline. From prompt to result, the animation was implemented in approximately two minutes, demonstrating how AI can quickly establish a clean, professional entrance sequence with minimal effort. Slide 2 introduces a hybrid animation approach, designed with readability and adaptability in mind: A simple JavaScript entrance animation handles the vertical timeline dots. Text boxes rely on lightweight opacity transitions. Manual time-shifting aligns text entrances with dot interactions. Instead of one complex JavaScript timeline controlling everything, the interaction logic is distributed: Motion is broken into small, understandable pieces. Timing relationships remain visible and adjustable. Reviewers can easily trace how each interaction affects the UI. The resulting experience still feels animated, but the perceived motion comes largely from: Delays and offsets Layer changes Consistent spatial relationships between dots and text This makes the approach easier to follow during review and simpler to apply to similar projects, especially compared to a single, tightly coupled JavaScript animation. The design demonstrates how thoughtful timing and minimal motion can deliver clarity, responsiveness, and polish—without increasing implementation complexity. View project here: #533_AI_Animations.story148Views2likes0CommentsNew Tutorial! Build Dynamic Animated Bar Charts In Storyline Using JavaScript
Hi Heroes, I’m excited to share the latest episode of my Storyline Magic Series with you all! In this episode, I'll be showing you how to create dynamic animated bar charts in Articulate Storyline 360, using standard Storyline shapes, variables, and a touch of JavaScript magic. 📊✨ One of the highlights of this technique is that your chart animations are controlled using Storyline number variables, and bar shapes will adjust their height beautifully across all screen sizes, ensuring consistent results for all users. By the end of the tutorial, you’ll have a reusable template that you can apply to any bar chart designs you want to bring to life in Storyline! Check out the full tutorial below, along with a link to all previous episodes in the series: Watch the full series here - https://lnkd.in/dNvyD7wv --- My name's Chris Hodgson, an eLearning developer and software trainer based in the UK. I enjoy creating fun, unique, and engaging online experiences using Articulate software! Connect with me on LinkedIn - https://www.linkedin.com/in/chrishodgson44/
582Views5likes2CommentsRise notes utility
I added a global utility bar to my Rise course to add a simple 'notes' piece, data is kept in the browser's local storage and it will not write to SCORM. Because of the global nature of this addon, it can be a handy way to make the functionality, and even some branding, always available to users across your entire course.
547Views10likes12Comments