In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

「Error #1068: int と * は共有できません。」というランタイムエラー再現

Get Adobe Flash player
by asahiufo 22 Jun 2010

    Talk

    9re at 23 Jun 2010 08:56
    コンパイラのバグな気がしますね ラベルとfor eachの組み合わせが正しくコンパイル出来ていないようです。 for eachをforに書き換えたり、 for eachの中でのcontinueをラベルなしにしたり(文意は変ってしまいますが・・) すると正常終了する
    asahiufo at 23 Jun 2010 20:55
    やっぱりバグなんでしょうかね・・・。 これにハマって、結構時間とられてしまいました。 for eachをforに変えて動作確認してみようと思います。
    asahiufo at 27 Jul 2010 18:41
    上記コードは、ラベルを指定してcontinueしたことが原因だった模様。ラベルを使わないようにしたらランタイムエラーは消えました。

    Tags

    Embed
/**
 * Copyright asahiufo ( http://wonderfl.net/user/asahiufo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/m3i1
 */

package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	public class LoopLabelTest extends Sprite
	{
		private var _tracer:TextField;
		
		public function LoopLabelTest()
		{
			_tracer = new TextField();
			_tracer.autoSize = TextFieldAutoSize.LEFT;
			addChild(_tracer);
			
			try
			{
				_tracer.appendText("開始\n");
				test();
				_tracer.appendText("正常終了\n");
			}
			catch (e:Error)
			{
				_tracer.appendText(e.message);
			}
		}
		
		private function test():void
		{
			var list:Vector.<uint> = new Vector.<uint>();
			for (var i:uint = 0; i < 100; i++)
			{
				list.push(i);
			}
			
			topLabel:
			for (var j:uint = 0; j < 10; j++)
			{
				if (j == 3)
				{
					continue topLabel;
				}
				var value:uint;
				for each (value in list)
				{
					if (value > 50)
					{
						continue topLabel;
					}
				}
				for each (value in list)
				{
					if (value % 2 == 0)
					{
						continue topLabel;
					}
				}
				for each (value in list)
				{
					if (value % 3 == 0)
					{
						continue topLabel;
					}
				}
			}
		}
	}
}