!7 module TalkingSmiley > DynModule { transient JLabel lbl; transient int interval = 100; transient F0 rand; transient S code; transient volatile bool talking; start { rand = f0_randomLL_differentEveryTime("01", "02", "03", "05"); dm_vmBus_onMessage('talking, r { talking = true; print("Talking"); }); dm_vmBus_onMessage('doneTalking, r { talking = false; print("Done talking"); }); } visualize { lbl = jimage(keriyo_cached(code = "07")); awtCalcEvery(lbl, interval, r { S newCode = talking ? rand! : "07"; if (neq(newCode, code)) setImage(lbl, keriyo_cached(code = newCode)); }); ret lbl; } }