4

AS3 に触れてから数年が経ちましたが、少しスクリプトが必要なプロジェクトがあります。

一般的な開く/閉じるボタンに応じて、目次メニューを下にスライドさせてから上にスライドさせようとしています。概念は、jQuery で .slideToggle() を使用する場合と同じです。

インスタンス名を指定して MovieClip を作成し、ライブラリで ActionScript 用にエクスポートしましたが、何らかの理由で、メソッドを実行して 325 ピクセル下に移動しようとすると、次のエラーが発生し続けます。

1046: 型が見つからないか、コンパイル時の定数ではありません: toc.

ライブラリに何かの参照が欠落していることに気付きましたが、MC にはインスタンス名があり、AS 用にエクスポートされているため、それが何であるかについて少し戸惑っています。私のスクリプトはすべてフレーム 1 にあり、外部クラスは使用していません。どんな助け/ポインタも大歓迎です!! コードの下部にある電子メールリンクを作成しようとすると、同じ問題が発生します。

繰り返しますが、どんな助けでも大歓迎です!! ありがとう!!

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.SimpleButton;

// Initial load elements
gotoAndStop("Frame1");
UpdateFrame();

// Mouse events
btnNextSlide.addEventListener(MouseEvent.CLICK, NextSlide);
btnPrevSlide.addEventListener(MouseEvent.CLICK, PrevSlide);
btnTOC.addEventListener(MouseEvent.CLICK, ShowToC);
//btnDifferenceLink.addEventListener(MouseEvent.CLICK, Email);

// Various Methods
function NextSlide(event:MouseEvent):void
{
// find current slide, go to next slide
var currentFrame = this.currentFrame;
var nextFrame = currentFrame + 1;

if (int(nextFrame) == this.totalFrames)
{
    // stop
    gotoAndStop("Frame" + this.framesLoaded);
}
else
{
    // go to next slide
    gotoAndStop("Frame" + nextFrame);
}

// go to and stop at the next frame
UpdateFrame();
}

function PrevSlide(event:MouseEvent):void
{
// find current slide
var currentFrame = this.currentFrame;
var prevFrame = currentFrame - 1;

if (int(prevFrame) == 1)
{
    // stop
    gotoAndStop("Frame1");
}
else
{
    // go to next slide
    gotoAndStop("Frame" + prevFrame);
}

// go to and stop at the next frame
UpdateFrame();
}

function UpdateFrame():void
{
txtCurrentSlide.text = this.currentFrame.toString();
}

function Email():void
{
var email:URLRequest = new URLRequest("mailto:emailaddress");
navigateToURL(email, "_blank");
}

function ShowToC():void
{
// slide Table of Contents down
toc.y = 325;
}

function HideToC():void
{
// slide Table of Contents up
toc.y = -325;
}
4

1 に答える 1

12

私はちょうど解決策を見つけました!

curtismorley.com/2007/06/20/flash-cs3-flex-2-as3-error-1046

彼の最初の段落で、彼はステージ上のオブジェクトとライブラリ内のオブジェクトが同じ名前を持つことはできないと述べています。私の場合、ライブラリに「toc」というアセットがあり、インスタンス名で「toc」を参照していました。これを変更することで、問題は解決しました。私はこのばかげたエラーで1日半探してきました..

于 2013-06-20T12:59:01.520 に答える