2014-03-28 31 views
0

所以我目前正試圖在我的兩個精靈運行我的碰撞試驗,而且我得到了以下錯誤:1067:值隱式強制

C:\\Code\\Game\Game.as, Line 54, Column 34 1067: Implicit coercion of a value of type mvc:PlayerModel to an unrelated type assets.Scripts:SpriteAnimation.

這是指向以下行代碼:

handleSpriteToSpriteCollision(_player, _boss);

該函數如下:

private function handleSpriteToSpriteCollision(sprite1:SpriteAnimation, sprite2:SpriteAnimation):void 
{ 
    var toSprite2 : VectorModel = new 
    VectorModel(0,0,0,0, sprite2.x - sprite1.x, sprite2.y - sprite1.y); 
    var bitmapData1:BitmapData = new BitmapData(sprite1.width, sprite1.height);     
    while(testBitmapCollision(sprite1.spriteFrameBitmapData, sprite1.topLeftX, sprite1.topLeftY, sprite2.spriteFrameBitmapData, sprite2.topLeftX, sprite2.topLeftY)) 
    { 
     sprite2.x -= toSprite2.dx; 
     sprite2.y -= toSprite2.dy; 
    } 
} 

兩個精靈都顯示得很好,但只要我調用函數就會崩潰。在這一點上,我只需要一些新的眼睛來看看代碼,看看發生了什麼問題。

編輯:這裏是PlayerModel.as

package mvc 
{ 
import flash.events.Event; 
import flash.events.EventDispatcher; 
import assets.Scripts.SpriteAnimation; 

public class PlayerModel extends EventDispatcher 
{ 
    private var _previousX:Number = 0; 
    private var _previousY:Number = 0; 
    private var _xPos:Number = 0; 
    private var _yPos:Number = 0; 
    public var vx:Number = 0; 
    public var vy:Number = 0; 
    private var _height:uint = 30; 
    private var _width:uint; 
    private var _color:uint; 

    public function PlayerModel():void 
    { 
    } 
    public function update():void 
    { 
     xPos += vx; 
     yPos += vy; 
    } 

    public function get height():uint 
    { 
     return _height; 
    } 

    public function get color():uint 
    { 
     return _color; 
    } 

    public function get xPos():Number 
    { 
     return _xPos; 
    } 
    public function set xPos(value:Number):void 
    { 
     _xPos = value; 
     dispatchEvent(new Event(Event.CHANGE)); 
    } 

    public function get yPos():Number 
    { 
     return _yPos; 
    } 
    public function set yPos(value:Number):void 
    { 
     _yPos = value; 
     dispatchEvent(new Event(Event.CHANGE)); 
    } 

    public function set setX(value:Number):void 
    { 
     _previousX = value - vx; 
     xPos = value; 
    } 

    public function set setY(value:Number):void 
    { 
     _previousY = value - vy; 
     yPos = value; 
    } 
} 
} 

回答

0

我會檢查的第一件事是類你的老闆和球員的對象繼承你SpriteAnimation類:

class PlayerModel extends SpriteAnimation 
{ ... 

好像你handleSpriteToSpriteCollision函數正在尋找兩個SpriteAnimations,並且至少傳遞的PlayerModel不是一個

Sprite繼承EventDispatch呃所以只要你的SpriteAnimation也繼承了Sprite,你就不應該失去任何功能

相關問題