Exemplo n.º 1
0
 /// <summary>
 /// Инициировать вызов функции (управляемой/неуправляемой)
 /// </summary>
 /// <param name="function">Функция</param>
 /// <param name="context">Контекст</param>
 /// <param name="args">Параметры</param>
 /// <param name="copyResult">Копировать результат работы функции в стек вычислений вызывающей функции</param>
 /// <param name="onCompleteCallback">Вызывается по завершении работы функции</param>
 internal void CallFunction(
     JSFunction function,
     JSObject context,
     JSValue[] args,
     bool copyResult,
     Action onCompleteCallback = null)
 {
     if (function.IsNative)
     {
         var result = function.Invoke(this, context, CurrentFrame.LocalScope, args);
         if (copyResult)
         {
             CurrentFrame.Push(result);
         }
     }
     else
     {
         var managedFunction = (JSManagedFunction)function;
         CurrentFrame = new CallStackFrame(
             CurrentFrame,
             VM,
             managedFunction,
             context,
             new LocalVariableScope(managedFunction.OuterScope),
             args,
             copyResult,
             onCompleteCallback);
     }
 }
Exemplo n.º 2
0
        private void blvStops_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnMoveUp.Enabled   = this.blvStops.Items.Count > 0 && this.blvStops.SelectedIndices.Count > 0 && this.blvStops.SelectedIndices[0] > 0;
            btnMoveDown.Enabled = this.blvStops.Items.Count > 0 && this.blvStops.SelectedIndices.Count > 0 && this.blvStops.SelectedIndices[0] < blvStops.Items.Count - 1;

            if (this.blvStops.SelectedIndices.Count > 0)
            {
                JSFunction isBouncing = (JSFunction)this.webView.EvalScript("isBouncing");
                if (isBouncing != null)
                {
                    if ((bool)isBouncing.Invoke(this.webView.GetDOMWindow(), new object[] { this.blvStops.SelectedIndices[0] }) == false)
                    {
                        JSFunction bounceMarker = (JSFunction)this.webView.EvalScript("bounceMarker");
                        bounceMarker.Invoke(this.webView.GetDOMWindow(), new object[] { this.blvStops.SelectedIndices[0] });
                    }
                }
            }
        }