Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Flash变量传递给PHP_Php_Javascript_Flash_Actionscript_Variables - Fatal编程技术网

将Flash变量传递给PHP

将Flash变量传递给PHP,php,javascript,flash,actionscript,variables,Php,Javascript,Flash,Actionscript,Variables,我有一个用Visual Basic编写的简单独立应用程序,我正在使用PHP/javascript将其移植到基于浏览器的应用程序 最初的VB应用程序有一些简单的嵌入式flash游戏,带有令牌和点数计数器。令牌和点值作为变量在应用程序和游戏之间传递 我试图在PHP端口中实现相同的效果,而不使用actionscript中已经存在的变量修改actionscript代码 下面是从数据库加载值并使用FlashVars将该值发布到flash的Visual Basic代码: Private Sub loadPl

我有一个用Visual Basic编写的简单独立应用程序,我正在使用PHP/javascript将其移植到基于浏览器的应用程序

最初的VB应用程序有一些简单的嵌入式flash游戏,带有令牌和点数计数器。令牌和点值作为变量在应用程序和游戏之间传递

我试图在PHP端口中实现相同的效果,而不使用actionscript中已经存在的变量修改actionscript代码

下面是从数据库加载值并使用FlashVars将该值发布到flash的Visual Basic代码:

Private Sub loadPlayer()

    Try

        If CtblPoints.CheckPointsByID(mCard) Then

            objPoints = CtblPoints.GettblPointsByID(mCard)
            objPlayerAc = CtblPlayerAccount.GettblPlayerAccountByPlayerID(objPoints.AccountId)
            objPlayer = CtblPlayer.GettblPlayerByID(objPlayerAc.PlayerID)
            objPlayerBal = CtblPlayerBalance.GettblPlayerBalanceByID(objPlayerAc.PlayerID)


            objPlayerAcDetail = CtblPlayerAccountDetail.GettblPlayerAccountDetailByAmount(objPoints.AccountId)
            strTotalPoints = Convert.ToString(objPlayerAc.Points)
            strTotalWin = Convert.ToString(objPlayerBal.TokenAmount)

            'Dim intTokenAmount As Decimal = Convert.ToDecimal(objPlayerBal.TokenAmount)
            'strTotalWin = Convert.ToString(Convert.ToInt64(intTokenAmount * 100))

            flashPlayer.Size = panelGame.Size
            flashPlayer.FlashVars = "totalEntries=" & strTotalPoints & "&credit=" & strTotalWin
            flashPlayer.LoadMovie(0, strGameFile)
            flashPlayer.Play()

        Else
            Me.Close()
            Dim frmInvCrd As New frmInvalidCard
            frmInvCrd.ShowDialog()
        End If


    Catch ex As Exception

    End Try
我试图在PHP中重新创建它,但我不知道如何开始实现它

flash中的变量公开声明,并使用全局导入:

import com.atticmedia.console.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.utils.*;
变量“totalEntries”的第一个声明是:

public var totalEntries:int = 0;
这是actionscript中使用的totalEntries片段

    public function notifyServerOfUnwonCredits(param1)
    {
        var remainder:* = param1;
        if (this.useServer)
        {
            this.targetWinAmount = 0;
            this.cancelUpdateOverTime = F9.setEnterFrame(this.updateOverTime);
            fscommand("OverTime", "" + remainder);
            this.flashVarsUpdatedAction = function ()
        {
            originalTotalWin = totalWin;
            return;
        }// end function
        ;
        }
        else
        {
            this.setTotalEntries(100000);
            this.setTotalWin(0);
        }
        return;
    }// end function
最终,我将把这些值传递回mySQL数据库

对这一点的任何洞察都会非常有帮助,
谢谢

PHP不是这样工作的;它不会坐在那里,处于一种你可以随时联系和交谈的持续状态。您需要一种机制来向无状态后端发送和接收数据。幸运的是,flash可以很好地处理cookie,所以使用PHP会话不会产生问题。所以,问题是您是想通过Flash将数据传递给PHP,还是想通过Flash将变量传递给Javascript,然后将它们发送给PHP

直接通过flash路线与我分享,这是AS 2.0,但应该可以:

动作脚本:

function getData (path:String, req:Object, fn:Function) {
   var q:Object = new LoadVars();
   for (var prop in req) {
       q[prop] = req[prop];
   }
   q.action = path;
   q.onLoad = fn;
   q.sendAndLoad("/hooks/integrate.php",q,"POST");
}
在本例中,我传递到一个文件并指定一个POST参数action,它告诉处理文件我要做什么

<?php
if (!isset($_POST['action'])) { die; }
switch($_POST['action']) {
    case 'something':
// snip...
}
或者,您可以使用XHR/AJAX进行设置,并使用flash.external.ExternalInterface.call方法将变量传递给Javascript,但是设置这样的解决方案超出了本答案的范围


长话短说,由于PHP本质上是一个无状态的基于请求的web服务,所以没有像在VB中那样快速、简单的方法来实现它;您必须采用另一种机制。

谢谢您的回复,这为我澄清了一些问题。如果你不介意的话,还有更多的问题。如果我使用javascript作为向PHP传递变量的中间人,我还需要对现有的actionscript进行更改吗?我理解您的观点,PHP是一个基于请求的无状态web服务,但javascript也是这样吗?我猜这个问题的答案是:我能做些什么来避免修改现有的actionscript代码库吗?这是可能的,因为只要页面没有刷新,javascript就会保持活动和持久性,但如果您将变量传递给PHP,这应该无关紧要。我假设您的flash应用程序会自动将您想要的任何变量作为其自身的属性提供,因此您也许可以对它们进行轮询,但老实说,我通常使用flash.external.ExternalInterface.call与JavaScript进行通信,所以我不能完全确定。
getData('saveVar',{varname: 'foo', varvalue: foo},mySuccessFunction);