Add speed adjustment slider
This commit is contained in:
parent
71e782088e
commit
5f8e240c0f
|
@ -67,6 +67,18 @@ Lær mere om ChatControllen og hvorfor det er en dårlig idé, i vores interakti
|
||||||
</svg>
|
</svg>
|
||||||
Du kan bruge den blå pil for at åbne kontaktlisten
|
Du kan bruge den blå pil for at åbne kontaktlisten
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<input type="range"
|
||||||
|
name="typing_speed"
|
||||||
|
id="typing_speed"
|
||||||
|
title="hastighed"
|
||||||
|
onChange="adjust_typing_speed(this.value)"
|
||||||
|
value="50"
|
||||||
|
min="0"
|
||||||
|
max="100" />
|
||||||
|
<input type="text" value="50" id="speed_indicator" readonly size="1" />
|
||||||
|
Hastighed
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- end #app-area -->
|
</div><!-- end #app-area -->
|
||||||
|
|
||||||
|
@ -156,6 +168,10 @@ og følger instrukserne.
|
||||||
function swipe_viewport() {
|
function swipe_viewport() {
|
||||||
document.getElementById('movie').contentDocument.getElementById('to_contact_list_button').onclick();
|
document.getElementById('movie').contentDocument.getElementById('to_contact_list_button').onclick();
|
||||||
}
|
}
|
||||||
|
function adjust_typing_speed(new_value) {
|
||||||
|
document.getElementById('movie').contentDocument.getElementById('message_input_box').onclick()(100 - new_value);
|
||||||
|
document.getElementById('speed_indicator').value = new_value;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -68,6 +68,18 @@ interactive film on the left.
|
||||||
</svg>
|
</svg>
|
||||||
You can use the blue arrow to open the contact list
|
You can use the blue arrow to open the contact list
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<input type="range"
|
||||||
|
name="typing_speed"
|
||||||
|
id="typing_speed"
|
||||||
|
title="typing speed"
|
||||||
|
onChange="adjust_typing_speed(this.value)"
|
||||||
|
value="50"
|
||||||
|
min="0"
|
||||||
|
max="100" />
|
||||||
|
<input type="text" value="50" id="speed_indicator" readonly size="1" />
|
||||||
|
Speed
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- end #app-area -->
|
</div><!-- end #app-area -->
|
||||||
|
|
||||||
|
@ -160,6 +172,10 @@ and follow the instructions.
|
||||||
function swipe_viewport() {
|
function swipe_viewport() {
|
||||||
document.getElementById('movie').contentDocument.getElementById('to_contact_list_button').onclick();
|
document.getElementById('movie').contentDocument.getElementById('to_contact_list_button').onclick();
|
||||||
}
|
}
|
||||||
|
function adjust_typing_speed(new_value) {
|
||||||
|
document.getElementById('movie').contentDocument.getElementById('message_input_box').onclick()(100 - new_value);
|
||||||
|
document.getElementById('speed_indicator').value = new_value;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
onload="run()"
|
onload="run()"
|
||||||
overflow="auto"
|
overflow="auto"
|
||||||
style="font-family: sans; border-radius: 10px;"
|
style="font-family: sans; border-radius: 10px;"
|
||||||
|
id="movie"
|
||||||
>
|
>
|
||||||
<defs>
|
<defs>
|
||||||
<symbol id="kaereste_foto" width="60" height="200">
|
<symbol id="kaereste_foto" width="60" height="200">
|
||||||
|
@ -85,7 +86,14 @@ const bubble_spacing = 5;
|
||||||
const visible_chat_area = {'top': 60,
|
const visible_chat_area = {'top': 60,
|
||||||
'bottom': height - 100 // minus status & input areas
|
'bottom': height - 100 // minus status & input areas
|
||||||
};
|
};
|
||||||
const typing_speed = 50;
|
|
||||||
|
var typing_speed = 50;
|
||||||
|
function set_typing_speed(new_speed) {
|
||||||
|
typing_speed = new_speed;
|
||||||
|
}
|
||||||
|
function get_typing_speed() {
|
||||||
|
return typing_speed; // prevent closure capture
|
||||||
|
}
|
||||||
|
|
||||||
var conversation_count = 0;
|
var conversation_count = 0;
|
||||||
var current_dialog = null;
|
var current_dialog = null;
|
||||||
|
@ -417,7 +425,7 @@ function Dialog() {
|
||||||
|
|
||||||
async function post_message(dialog, message, is_myself) {
|
async function post_message(dialog, message, is_myself) {
|
||||||
if(!is_myself && dialog.messages.length) {
|
if(!is_myself && dialog.messages.length) {
|
||||||
await wait(message.length * typing_speed);
|
await wait(message.length * get_typing_speed());
|
||||||
} // first message should be instant
|
} // first message should be instant
|
||||||
|
|
||||||
if(!dialog.is_active()) {
|
if(!dialog.is_active()) {
|
||||||
|
@ -435,7 +443,7 @@ function Dialog() {
|
||||||
while(scroll > line_height) {
|
while(scroll > line_height) {
|
||||||
dialog.scroll_by(-line_height);
|
dialog.scroll_by(-line_height);
|
||||||
scroll -= line_height;
|
scroll -= line_height;
|
||||||
await wait(50);
|
await wait(get_typing_speed());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,7 +453,7 @@ function Dialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.me = async function(message, will_be_flagged) {
|
this.me = async function(message, will_be_flagged) {
|
||||||
await wait(1500); // give me some time to read
|
await wait(30 * get_typing_speed()); // give me some time to read
|
||||||
if(!this.is_active()) return;
|
if(!this.is_active()) return;
|
||||||
await type_message(this, message);
|
await type_message(this, message);
|
||||||
if(!this.is_active()) return;
|
if(!this.is_active()) return;
|
||||||
|
@ -473,11 +481,11 @@ async function type_message(dialog, message) {
|
||||||
for(let line of lines) {
|
for(let line of lines) {
|
||||||
text.data = '';
|
text.data = '';
|
||||||
for(let c of line) {
|
for(let c of line) {
|
||||||
await wait(typing_speed);
|
await wait(get_typing_speed());
|
||||||
text.data += c;
|
text.data += c;
|
||||||
}
|
}
|
||||||
if(!dialog.is_active()) break;
|
if(!dialog.is_active()) break;
|
||||||
await wait(20); // otherwise it's too fast
|
await wait(0.4 * get_typing_speed()); // otherwise it's too fast
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,20 +509,20 @@ async function local_message_processing(will_be_flagged) {
|
||||||
let text_element = document.getElementById('message_status');
|
let text_element = document.getElementById('message_status');
|
||||||
let indicator = text_element.childNodes[0];
|
let indicator = text_element.childNodes[0];
|
||||||
indicator.data = 'scanning for illegal content';
|
indicator.data = 'scanning for illegal content';
|
||||||
await wait(800);
|
await wait(16 * get_typing_speed());
|
||||||
if(will_be_flagged) {
|
if(will_be_flagged) {
|
||||||
let box = document.getElementById('message_status_box');
|
let box = document.getElementById('message_status_box');
|
||||||
text_element.setAttribute('fill', 'red');
|
text_element.setAttribute('fill', 'red');
|
||||||
box.setAttribute('fill', 'yellow');
|
box.setAttribute('fill', 'yellow');
|
||||||
indicator.data = 'Reporting suspicious content';
|
indicator.data = 'Reporting suspicious content';
|
||||||
await wait(1000);
|
await wait(20 * get_typing_speed());
|
||||||
text_element.setAttribute('fill', 'white');
|
text_element.setAttribute('fill', 'white');
|
||||||
box.setAttribute('fill', '#FF7B00');
|
box.setAttribute('fill', '#FF7B00');
|
||||||
}
|
}
|
||||||
indicator.data = 'encrypting message';
|
indicator.data = 'encrypting message';
|
||||||
await wait(550);
|
await wait(11 * get_typing_speed());
|
||||||
indicator.data = 'sending message';
|
indicator.data = 'sending message';
|
||||||
await wait(500);
|
await wait(10 * get_typing_speed());
|
||||||
indicator.data = 'message was sent';
|
indicator.data = 'message was sent';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -898,7 +906,7 @@ function run() {
|
||||||
<text id="message_status" x="310" y="540" fill="white">status</text>
|
<text id="message_status" x="310" y="540" fill="white">status</text>
|
||||||
|
|
||||||
<!-- [right] text input -->
|
<!-- [right] text input -->
|
||||||
<rect id="message_input_box" x="300" y="550" stroke="black" fill="white" width="250" height="50" />
|
<rect id="message_input_box" x="300" y="550" stroke="black" fill="white" width="250" height="50" onclick="return set_typing_speed" />
|
||||||
<rect id="message_submit_box" x="550" y="550" stroke="black" fill="#CCCCCC" width="50" height="50" />
|
<rect id="message_submit_box" x="550" y="550" stroke="black" fill="#CCCCCC" width="50" height="50" />
|
||||||
<text id="message_input_data" x="310" y="575" fill="black"></text>
|
<text id="message_input_data" x="310" y="575" fill="black"></text>
|
||||||
<text id="message_submit_button" x="555" y="580" fill="black">SEND</text>
|
<text id="message_submit_button" x="555" y="580" fill="black">SEND</text>
|
||||||
|
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
Loading…
Reference in a new issue