Actionscript 3 1067:将类型为theplayclass的值隐式强制为不相关的main类型
我需要帮助,因为我想创建一个游戏屏幕,显示分数。但是,有一个错误阻止我将分数从PlayClass.as传输到GameOverClass.as。有没有方法可以将一个值传递给另一个movieclip而不会导致任何错误 我参考了本网站的源代码: 这是错误 C:\Users\xxx\Downloads\Migrate\test\theplayclass.as,第54行,第41列1067:将theplayclass类型的值隐式强制到不相关的main类型 梅因Actionscript 3 1067:将类型为theplayclass的值隐式强制为不相关的main类型,actionscript-3,oop,reference,pass-by-reference,coercion,Actionscript 3,Oop,Reference,Pass By Reference,Coercion,我需要帮助,因为我想创建一个游戏屏幕,显示分数。但是,有一个错误阻止我将分数从PlayClass.as传输到GameOverClass.as。有没有方法可以将一个值传递给另一个movieclip而不会导致任何错误 我参考了本网站的源代码: 这是错误 C:\Users\xxx\Downloads\Migrate\test\theplayclass.as,第54行,第41列1067:将theplayclass类型的值隐式强制到不相关的main类型 梅因 package { import
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class main extends MovieClip
{
public var playClass:theplayclass;
public var gameOverClass:thegameoverclass;
public function main()
{
showWin();
}
public function showWin()
{
playClass = new theplayclass(this);
addChild(playClass);
}
public function showGameOver()
{
gameOverClass = new thegameoverclass(this);
addChild(gameOverClass);
removeChild(playClass);
playClass = null;
}
}
}
theplayclass.as
package
{
import flash.display.MovieClip;
import flash.events.*;
public class theplayclass extends MovieClip
{
private var mainClass:main;
var gameScore:Number;
var gameOverScore:thegameoverclass;
public function theplayclass(passedClass:main)
{
mainClass = passedClass;
scoreText.text ="0";
gameScore = 0;
win.addEventListener(MouseEvent.CLICK, showwinFunction);
next.addEventListener(MouseEvent.CLICK, showgameoverFunction);
addEventListener(Event.ADDED_TO_STAGE, addToStage);
addEventListener(Event.ENTER_FRAME, changeScore);
}
public function addToStage(e:Event):void
{
this.x = 0;
this.y = 0;
}
private function showwinFunction(e:MouseEvent):void
{
gameScore+=50;
}
private function changeScore(e:Event):void
{
scoreText.text =""+gameScore;
}
public function showgameoverFunction(e:MouseEvent)
{
mainClass.showGameOver();
gameOverScore = new thegameoverclass(this);
gameOverScore.setTextScore(gameScore);
}
}
}
游戏是超类的
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.*;
public class thegameoverclass extends MovieClip
{
var mainClass:main;
var scorePoints:Number;
public function thegameoverclass(passedClass:main)
{
mainClass = passedClass;
finalScore.text = "test";
}
public function setTextScore(textToSet:Number)
{
finalScore.text = ""+scorePoints;
}
}
}
关于您的最新问题(通过屏幕查看游戏中的NaN分数),请查看您的代码在游戏结束时所做的操作:
- Player类调用
Main.showGameOver()
- 玩家类在屏幕上制作新游戏
- 玩家类在屏幕上设置新游戏的最终分数
- 你在屏幕上制作了一个新游戏并将其添加到舞台上,但现在这是一个不同于玩家类的屏幕上游戏
- 这个屏幕上的新游戏从未设置过最终分数(因此分数为
)NaN
- 从您的玩家类中删除对游戏的所有引用
- 修改main中的
方法,使其接受分数showGameOver()
- 使用
Main.showGameOver()
- 修改Main中的
方法,以便在游戏屏幕上设置分数showGameOver()
public function showgameoverFunction(e:MouseEvent)
{
mainClass.showGameOver(gameScore.toString());
}
主要类别:
public function showGameOver(finalScore:String)
{
gameOverClass = new thegameoverclass(this);
gameOverClass.setScoreText(finalScore);
addChild(gameOverClass);
removeChild(playClass);
playClass = null;
}
关于您的最新问题(通过屏幕查看游戏中的NaN分数),请查看您的代码在游戏结束时所做的操作:
- Player类调用
Main.showGameOver()
- 玩家类在屏幕上制作新游戏
- 玩家类在屏幕上设置新游戏的最终分数
- 你在屏幕上制作了一个新游戏并将其添加到舞台上,但现在这是一个不同于玩家类的屏幕上游戏
- 这个屏幕上的新游戏从未设置过最终分数(因此分数为
)NaN
- 从您的玩家类中删除对游戏的所有引用
- 修改main中的
方法,使其接受分数showGameOver()
- 使用
Main.showGameOver()
- 修改Main中的
方法,以便在游戏屏幕上设置分数showGameOver()
public function showgameoverFunction(e:MouseEvent)
{
mainClass.showGameOver(gameScore.toString());
}
主要类别:
public function showGameOver(finalScore:String)
{
gameOverClass = new thegameoverclass(this);
gameOverClass.setScoreText(finalScore);
addChild(gameOverClass);
removeChild(playClass);
playClass = null;
}
thegameoverclass的主类没有被使用,为什么不删除它呢?或者theplayclass包含一个变量mainClass,您想将其用于thegameover构造函数吗?@Pan我想使用GameOverClass构造函数。无法删除PlayClass下的变量mainClass,因为我需要将一个方法从main传递给PlayClass。无论如何,在我从GameOverClass中删除Main类并删除GameOverClass和PlayerClass中的所有参数后,我出现了错误#1009,表示它无法访问null对象引用的属性或方法。Pan指出了原始错误的原因,但要明确一点:在PlayerClass中,您可以通过以下内容在屏幕上显示游戏:
gameOverScore=newthegameoverClass(this)代码>但应该是这样:gameOverScore=newthegameoverclass(mainClass)代码>。错误是无法将PlayerClass转换为主类。@SunilD。谢谢,这很有帮助!现在,下一个挑战是,如何设置确保GameOverclass显示PlayerClass中的分数,因为当我播放电影剪辑时,它会在gameover场景中显示NaN。没有使用GameOverclass的主类,为什么不删除它?或者theplayclass包含一个变量mainClass,您想将其用于thegameover构造函数吗?@Pan我想使用GameOverClass构造函数。无法删除PlayClass下的变量mainClass,因为我需要将一个方法从main传递给PlayClass。无论如何,在我从GameOverClass中删除Main类并删除GameOverClass和PlayerClass中的所有参数后,我出现了错误#1009,表示它无法访问null对象引用的属性或方法。Pan指出了原始错误的原因,但要明确一点:在PlayerClass中,您可以通过以下内容在屏幕上显示游戏:gameOverScore=newthegameoverClass(this)代码>但应该是这样:gameOverScore=newthegameoverclass(mainClass)代码>。错误是无法将PlayerClass转换为主类。@SunilD。谢谢,这很有帮助!现在,下一个挑战是,如何放置“确保gameover类显示玩家类的分数”,因为当我播放电影剪辑时,它会显示gameover场景中的NaN。谢谢!它是有效的:)我确实按照你的步骤做了,但是我通过将所有参数从字符串改为整数进行了一些编辑。接下来,我在gameoverclass.as中更改了名为setTextScore的方法,以接受参数。无论如何,非常感谢你的帮助。我从你那里学到了很多。顺便问一下,是否可以让玩家将游戏分数发送到GameOverclass,而不是将分数发送到主类和GameOverclass?谢谢!它是有效的:)我确实按照你的步骤做了,但是我通过将所有参数从字符串改为整数进行了一些编辑。接下来,我在gameoverclass.as中更改了名为setTextScore的方法,以接受参数。无论如何,非常感谢你的帮助。我从你那里学到了很多。顺便说一句,是我吗