貼り付け自体を「無効にする」ことはできないかもしれませんが(たとえば、Windowsアプリや何らかのブラウザ拡張機能でFlashコントロールを自分でホストしないと)、その方法については確かにかなり推測できます。誰かが少しタイマーベースの数学でアプリを使用しています。これが私が何を意味するかを説明するFlexアプリの(超)大まかな例です:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="this_creationComplete(event)">
<mx:Script>
<![CDATA[
private var timer:Timer;
import flash.events.Event;
private function this_creationComplete(event:Event):void
{
timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, timer_tick);
timer.start();
}
private function timer_tick(event:TimerEvent):void
{
var elapsedTimeInMinutes:Number = timer.currentCount / 60;
var averageWordLength:Number = 4;
var humanlyPossible:Number = 200;
var thisPersonsSpeed:Number = (txtTest.text.length / averageWordLength) / elapsedTimeInMinutes;
if (thisPersonsSpeed > humanlyPossible)
{
txtSpeed.text = "Wait, " + Math.floor(thisPersonsSpeed).toString() + " words per minute? This clown is probably cheating.";
txtTest.enabled = false;
timer.stop();
}
else
{
txtSpeed.text = "Currently typing " + Math.floor(thisPersonsSpeed).toString() + " wpm. Hurry up! Faster!";
}
}
]]>
</mx:Script>
<mx:VBox>
<mx:TextArea id="txtTest" width="600" height="300" />
<mx:Text id="txtSpeed" />
</mx:VBox>
</mx:Application>
基本的に、これは1分あたりの単語数を計算する単なるタイマーです。その数が特定のしきい値を超えると、タイマーが停止し、フォームが無効になります。
確かに、それは鉄壁ではありません。自分で実装する場合は、タイミング指向の追加の保護手段をいくつか追加します(たとえば、非アクティブな期間の後にタイマーを停止するなど)が、要点を説明する必要があります。他にも解決策があると思いますが、このような単純なもので十分に機能する可能性があります。
更新:何人かの人々がEvent.PASTEについて言及しましたが、これは機能しますが、ActionScript 2 / Flash Player9には存在しません。FlashPlayer10を確保でき、ActionScript 3でスクリプトを作成できれば、それは別のことです。オプション。